当前位置:  编程技术>移动开发
本页文章导读:
    ▪短信阻截的二种处理方式        短信拦截的二种处理方式 最近项目中要做的一个拦截某一个特定号码发来的短信的小功能,遇到到小问题(不得不说有些软件好过分啊),记录一下。1:拦截系统发送的短信广播我们知.........
    ▪ 热爱生活的人请过来见见:有没有通过叶子或花来识别植物的软件        热爱生活的人请过来看看:有没有通过叶子或花来识别植物的软件? 有没有通过叶子或花来识别植物的软件? 引言   在公园或郊外看到一些很好看的植物,但叫不出名字来,问别人也不.........
    ▪ 华为机器无法看日志的解决办法       华为机器无法看日志的解决方法 On call screen type *#*#2846579#*#* opens system management menu Project menu -> background settings-> Log setting Log level setting -> VERBOSE Log switch-> LOG on Dump and Log -> Checked.........

[1]短信阻截的二种处理方式
    来源: 互联网  发布时间: 2014-02-18
短信拦截的二种处理方式
最近项目中要做的一个拦截某一个特定号码发来的短信的小功能,遇到到小问题(不得不说有些软件好过分啊),记录一下。

1:拦截系统发送的短信广播
我们知道,系统在收到短信的时候,会发送一个短信广播,而广播的种类又分为有序广播和无序广播,而这个短信广播就是有序广播,我们在收到这个广播之后,可以abort掉,那么优先级在你后面的receiver就会接收不到这个广播了,然后麻烦就来了,有些短信软件比如说youni,360等等就会abort掉后让你接受不到这个广播了,还有一些定制android的rom根本不会让你接收到这个广播,也就是说通过广播来做拦截是有前提的。

package com.android.shop.sms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;

import com.android.shop.Constants;
/**
 * 短信拦截器,拦截电信短信平台数据
 * @author cg
 *
 */
public class SmsReceiver extends BroadcastReceiver {
	public static final String TAG = "SmsReceiver";
	public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
	public static final String SENDER_ADDRESS = "106903007090999";//sp短信发送地址,拦截注册时服务商发出短信
	
	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(SMS_RECEIVED_ACTION)){
			SmsMessage[] messages = getMessagesFromIntent(intent);
			for (SmsMessage message : messages){
				if(message.getOriginatingAddress().indexOf(SENDER_ADDRESS)!=-1){
					Log.d(TAG, message.getMessageBody());
					Intent it = new Intent();
					it.setAction(Constants.CAN_BIND_PHONE_ACTION);
					String key = message.getMessageBody();
					it.putExtra("key", key);
					context.sendBroadcast(it);
					abortBroadcast();
				}
			}
		}
	}
	
	public final SmsMessage[] getMessagesFromIntent(Intent intent){
		Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
		byte[][] pduObjs = new byte[messages.length][];
		for (int i = 0; i < messages.length; i++){
        	pduObjs[i] = (byte[]) messages[i];
        }
		byte[][] pdus = new byte[pduObjs.length][];
		int pduCount = pdus.length;
		SmsMessage[] msgs = new SmsMessage[pduCount];
		for (int i = 0; i < pduCount; i++){
        	pdus[i] = pduObjs[i];
        	msgs[i] = SmsMessage.createFromPdu(pdus[i]);
        }
        return msgs;
	}
	

}


2:通过ContentObserver监听短信数据库
private ContentObserver smsContentObserver =  new ContentObserver(new Handler()) {
		@Override
		public void onChange(boolean selfChange) {
			super.onChange(true);
			/*Cursor cursor = resolver.query(
					Uri.parse(SMS_INBOX_URI),
					new String[] { "_id", "address", "thread_id", "date",
							"protocol", "type", "body", "read" },
					" address=? and read=?", new String[] {SENDER_ADDRESS, "0"},
					"date desc");*/
			[color=red]//注释掉的是查未读状态的,但如果你的手机安装了第三放的短信软件时,他们有可能把状态改变了,你就查询不到数据[/color]
			Cursor cursor = resolver.query(
					Uri.parse(SMS_INBOX_URI),
					new String[] { "_id", "address", "thread_id", "date",
							"protocol", "type", "body", "read" },
					" address=?", new String[] {SENDER_ADDRESS},
					"date desc");
			
			while(cursor.moveToNext()){
				String address = cursor.getString(cursor.getColumnIndex("address"));
				String body = cursor.getString(cursor.getColumnIndex("body"));
				String id = cursor.getString(cursor.getColumnIndex("_id"));
				resolver.delete(Uri.parse("content://sms/"+id), null, null);
				Log.d("短信平台发来的短信---", address+":::::"+body);
				
				break;
			}
		}
	}; 

	@Override
    protected void onResume() {
    	super.onResume();
	ContentResolver resolver = getContentResolver();
    	resolver.registerContentObserver(Uri.parse(SMS_URI), true,smsContentObserver);
    }



public static final String SMS_URI = "content://sms/";//1.6下的系统
public static final String SMS_URI = "content://mms-sms/";[color=red]//1.6+的系统,要不然有些rom会onChange执行不了,也就是监听不了[/color]
public static final String SMS_INBOX_URI = "content://sms";

    
[2] 热爱生活的人请过来见见:有没有通过叶子或花来识别植物的软件
    来源: 互联网  发布时间: 2014-02-18
热爱生活的人请过来看看:有没有通过叶子或花来识别植物的软件?
有没有通过叶子或花来识别植物的软件? 引言

  在公园或郊外看到一些很好看的植物,但叫不出名字来,问别人也不一定知道,有没有一款能够帮助识别植物的软件呢,如果是手机版的就更好了。

  上周末在公园看到很多花儿在开放,突然想做这么一个软件,大体是这样的:用手机拍下叶子或花的照片,然后该软件识别出一些特征,比对数据库中的植物特征数据,找出相似度最高的一些植物来,显示出文字或图片的说明,比如种类、花期、产地、用途等信息来。需要用到图像识别和人工智能之类的技术。

  今天在网上搜索了一下,还真有,就是“植物识别软件-树叶快照Leafsnap”。找了一下相关的资料,整理出来,分享给大家。

关于“树叶快照Leafsnap”

        我们经常在野外看到一种不知名的植物植物,很想知道它的名字,如果电话请教一位专家,你会发现准确描述这个植物的形状、特点是一件非常难的事情。当然,还有种办法是拍一张照片,然后把它发出来,等专家来告诉你这是什么植物。这样当然没问题,但它仍然不够方便。其实命名是人类认识世界的最基本方式,我们学到的知识也大都是借助“被命名”来完成,也因为这样,知识传递更多的时候仅仅是个单向的过程。所以在没有名字的时候,你会很茫然。

老子《道德经》 写道
无名,万物之母也,有名,万物之始也。
 

 

  虽然目前这个软件只限于美国本土的植物,并且都是英文版的,而且只有苹果的产品可以下载使用,但是我觉得植物人们的好日子快到了,在不久的将来,中文版的此类软件也会很快开发出来的,反正我是翘首以盼了,科技改变生活,一部智能手机就能带给我们很多的方便。

  Peter Belhumeur认为的好办法是做一个叫Leafsnap的App应用。他是美国哥伦比亚大学计算机科学系的教授,他觉得因为不知道这种叶子叫什么,所以眼睁睁看着它而获取不了信息是件痛苦的事。如果大部分植物已经被命名的话(事实上地球上40万种植物大概只有25万种有名字,但这已经是一个相当庞大的数据库),它们应该可以被机器识别出来,就像人脸识别技术那样。他和和他的马里兰大学教授朋友David Jacobs一起成立了Leafsnap研发小组,他们的合作者还有美国史密森协会(Smithsonian Institution)的植物学家John Kress。这些人历时8年拍摄并收集不同种类的树叶,并设计出世界上首款识别植物的移动应用程序。5月15日,它被放上了苹果App Store。

 

  正如这个App的名字所示,Leafsnap的工作原理很简单:把你所见的叶子拍下来,然后系统会自动上传到数据库进行匹配,最后它会反弹出来一串和你观察的叶子样貌类似的植物,包括它们的名字和对应信息。因为加上了地理定位功能,这个应用还能帮你记住你是在哪里饶有兴趣地观察了世界。当然,目前这个应用只对美国东北地区原生植物有准确识别的能力,但这是一个不断成长的数据库。Peter Belhumeur当前最需要解决的问题是,如何找出树叶们具有代表性的图形,因为“世界上没有两片叶子是重样的”(他们想出的办法是,在叶子轮廓的每一个点上估计全轮廓的弯曲率,画出整体柱形图统计,再在不同的外轮都进行重复运算);而且为了辨识准确,目前你需要在一个白色背景下拍摄叶子,这意味着好多“公民科学家”会选择把叶子摘下来,这可不是植物学家鼓励的。

 

  三家著名的学府和机构联手推出了一款应用软件,让人们在欣赏湖光山色的同时,还可以增长知识,今后还会有助于环境保护,那就是起名为“树叶快照”(Leafsnap)的智能移动软件,利用该软件通过手机将拍摄下来的树叶照片上传,你就能知道这种树叫什么名字。

这款软件是哥伦比亚大学、马里兰大学和史密森学会联合开发的,这三个机构的计算机科学家、植物学家和学生,还有华盛顿生物学家野外俱乐部都对它做出了贡献。它是免费的软件,目前可以在iPhone和iPad上下载,不久也会推出基于安致(Android)系统的版本,届时三星、摩托罗拉和索尼爱立信等品牌的手机也可以使用这款软件。

 

  Leafsnap类似于人脸识别。人脸识别属于最困难的图像识别技术,它常常出现在科幻片里,也是刑侦技术的高端手段之一,某些极其敏感的部门将它用于门禁。但是因为不同个体脸部特征的差别可能很小,而且随着年龄变化和不同的表情会出现变化,再加上环境因素例如季节变化和不同光照等,提高利用人脸图像准确认定个体的概率还是一个极具挑战性的课题。目前在现实生活中大规模应用人脸识别还处于探索阶段,通常只是作为智能卡等工具的辅助手段。

 

  Leafsnap的数据库所储存的资料,目前还只包括纽约和华盛顿市附近树种的树叶、叶柄、花、果实和种子以及树皮,不久将扩展到涵盖美国全境的树木。当你在野外或者在自家后院看到一棵不知道名字的树木,如果你的移动设备装载了Leafsnap,就可以将拍下来的树叶照片上传,这套软件将拿你的照片与资料库存进行对比。

 

  与上面所说的人脸识别的困难一样,通过树叶来辨认树种也不容易,因为同一种树的树叶可能形状不完全一样,特别是不同树龄或不同季节,地区不同季节不同也可能形状有差异或颜色变化很大,有的不同种的树叶外形几乎一样。所以系统会在你的手机上显示一组类似的树叶照片,让你从中选择最接近的一种。接着它会提供那片树叶所代表的树种的其他性状图片和资料,由你来最后确认。

你也可以通过该系统上传果实、种子或树皮的照片进行搜索对比,还可以直接输入树木的俗名或学名,就会在你的移动设备上显示出树木的图像来。在你上传图像的时候,手机或iPad的全球定位功能会同时将拍照的地点附带传送出去。随着用户的增加,系统的数据库就会不断更新扩大,将为生物学家、环境保护工作者进行研究提供宝贵的资料,对制定环境政策也会有所帮助。

 

 

相关视频:http://v.youku.com/v_show/id_XMjc3NzMyMTE2.html

 

提供这款软件的网站了解更加详细的情况(http://leafsnap.com/)

 

这真是“植物”“人”的喜讯啊!

 


本节资料来自 济南户外爱心网 http://www.hwlove.com/forum.php?mod=viewthread&tid=6180

 

Leafsnap的技术原理

iPhone的植物识别应用Leafsnap的开发人员apu解释了该软件背后的技术原理。

 

Q:

Can you just tell us what the recognition tech behind it is?

你能告诉我们这个识别技术背后的原理吗?

 

A:

apu :Sure! There are 3 main pieces:

apu :当然,主要有3部分:

1. Segment the leaf from the background. Even though we require users to place the leaf on a white background, this is still a very tough problem because of lighting, shadows, viewpoint, blur, focus, etc. We've tried all published segmentation algorithms and nothing works. We wrote our own, using EM on the HSV colorspace as the basis for it (plus lots of heuristics for leaves). It works okay, but it definitely needs the most work.

1.从背景中提取出叶子轮廓。虽然我们要求使用者把叶子放在白色的背景中,但还是会遇到灯光、影子、模糊、聚焦等很棘手的问题。我们尝试了所有公布的分割算法都没有效果。于是我们自己编写了自己的分割算法,以色彩模型HSV的颜色空间上的形长单位EM为基准(加了许多算法)。它运作得很好,当然需要很大的工作量。

2. Extract some features from the contour of the leaf. We use histograms of curvature over scale. The idea is that some leaves have the same rough shape, but differ at a fine scale (e.g., serrated vs. smooth leaves). Others are similar at a fine-scale but look quite different overall. To distinguish all of these cases, we estimate "curvature at a scale" at each point on the contour and build a histogram of curvature values. We then repeat this at coarser and coarser scales and concatenate all histograms together to get a large feature vector.

2.从叶子的轮廓中提取一些特征参数。我们大规模使用曲率直方图。原理是这样的,有些叶子有着大概相同的外形,但是精细的地方存在差别(如叶片是边缘锯齿的或光滑的)。还有些叶片在细节上相同的但是整体上差别很大。为了区分这些情况,我们评估轮廓上每一点的曲率,得出一个曲率值的柱状图。然后大规模的重复这个步骤,然后把所有柱状图联系在一起获得一个大的特征向量。

2. Extract some features from the contour of the leaf. We use histograms of curvature over scale. The idea is that some leaves have the same rough shape, but differ at a fine scale (e.g., serrated vs. smooth leaves). Others are similar at a fine-scale but look quite different overall. To distinguish all of these cases, we estimate "curvature at a scale" at each point on the contour and build a histogram of curvature values. We then repeat this at coarser and coarser scales and concatenate all histograms together to get a large feature vector.

 

3.识别/匹配:我们用简单的最邻近分类法将特征向量与我们标记的地面真实叶片数据库匹配,给出排名前20左右的物种。

 

本节资料来自:http://old.dongxi.net/content/bilingual/left/b113M

 

其它关于植物识别的软件资讯

中国植物图片数据库查询软件

http://www.ylstudy.com/thread-15977-1-4.html

 

中国被子植物科的交互式检索表

http://www.efloras.org/charset_page.aspx?flora_id=1001&set_id=10059

 

百度贴吧 如何使识别植物不难?

http://tieba.baidu.com/f?kz=900741440

 

1 楼 骨之灵魂 2012-06-07  
这个想法真的很好啊。
2 楼 langyahuashi 2012-06-07  
图片识别还是很难吧,谷歌的图片搜索很多时候结果也不尽如人意
3 楼 langyahuashi 2012-06-07  
想法的确很不错。。
4 楼 gangbener 2012-06-07  
这玩意儿服务器要很给力吧?
5 楼 zhouhongqiang2010 2012-06-07  
这个东西很难的。。谁能做出一个有名的软件实现。。估计图灵稳拿
6 楼 metaphy 2012-06-08  
感兴趣。。。

    
[3] 华为机器无法看日志的解决办法
    来源: 互联网  发布时间: 2014-02-18
华为机器无法看日志的解决方法

On call screen type *#*#2846579#*#*

opens system management menu

Project menu -> background settings-> Log setting

Log level setting -> VERBOSE Log switch-> LOG on

Dump and Log -> Checked all the boxes

Restart device.

翻译:

1,在拨号界面输入 *#*#2846579#*#*,然后会打开 系统管理菜单。

2,选择ProjectMenu=》后台设置=》Log设置。

3,Log级别设置为VERBOSE。

4,Dump & Log内的全部复选框选中。

5.重启设备。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3