老人防走失小应用(利用百度地图接口)
来源:互联网 发布:java视频播放框架 编辑:程序博客网 时间:2024/04/30 13:03
我想实现一个功能
就是给老人手机里装一个应用。如果老人走失了,给他发送一条短信,比如发“12345”,老人手机会回发给你一条短信,是他的定位地址
当然硬是要给男朋友装那也没办法,有点贱贱的
下面是实现
添加权限,最后两条是读短信和发短信的权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" />
1.建一个BroadcastReceiver,监听短信
下面有个判断很奇怪,if(content.toString().equals("12345")||number.toString().equals("10010")),为什么要加10010呢?
因为我只有一张SIM卡,给10010发短信人家会回我。。。然后我可以把地址发给他,然后他又会回我,然后我再发,死循环了,是不是好蠢,玩完就把代码改了
这里只是小测验
Intent it=new Intent(context,SendMessageService.class);
it.putExtra("number",number.toString());
context.startService(it);
把号码传到service里,这个service是用来定位的,然后再发短信
public class MessageReceiver extends BroadcastReceiver { public MessageReceiver() { } @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. //throw new UnsupportedOperationException("Not yet implemented"); StringBuilder number=new StringBuilder(); StringBuilder content=new StringBuilder(); Bundle bundle=intent.getExtras();// Log.e("MessageReceiver","bundle2="+intent.getExtras().toString()); if(bundle!=null) { Log.e("SJJ","bundle="+bundle.size()); Object[] pdus=(Object[]) bundle.get("pdus"); SmsMessage[] smsMessages=new SmsMessage[pdus.length]; for(int i=0;i<pdus.length;i++) { smsMessages[i]=SmsMessage.createFromPdu((byte[]) pdus[i]); } number.append(smsMessages[0].getDisplayOriginatingAddress()); //number.append(" "); //content.append(smsMessages[0].getDisplayMessageBody()); for(SmsMessage message:smsMessages) { //number.append(message.getDisplayOriginatingAddress()); //number.append(" "); content.append(message.getDisplayMessageBody()); } } if(content.toString().equals("12345")||number.toString().equals("10010")) { Intent it=new Intent(context,SendMessageService.class); it.putExtra("number",number.toString()); context.startService(it); } Log.e("SJJ","number="+number.toString()+" content="+content.toString()); }}
2.建立个定位的Service
onReceiveLocation方法里获得location
content=location.getAddrStr();获得地址
下面这个方法发送短信,才短短几行代码。。
void sendMessage(String number,String content)
{
PendingIntent pi= PendingIntent.getService(SendMessageService.this,
0, new Intent(), 0);
smsMg.sendTextMessage(number, null, content,
pi, null);
}
@Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if (intent != null) {// final String action = intent.getAction();// if (ACTION_FOO.equals(action)) {// final String param1 = intent.getStringExtra(EXTRA_PARAM1);// final String param2 = intent.getStringExtra(EXTRA_PARAM2);// handleActionFoo(param1, param2);// } else if (ACTION_BAZ.equals(action)) {// final String param1 = intent.getStringExtra(EXTRA_PARAM1);// final String param2 = intent.getStringExtra(EXTRA_PARAM2);// handleActionBaz(param1, param2);// } number=intent.getStringExtra("number"); smsMg=SmsManager.getDefault(); mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类 mLocationClient.registerLocationListener( myListener ); //注册监听函数 LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置定位模式 option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02 option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true);//返回的定位结果包含地址信息 option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向 mLocationClient.setLocOption(option); mLocationClient.start(); if (mLocationClient != null && mLocationClient.isStarted()) { Log.e("SJJ", "mLocationClient.start();"); mLocationClient.requestLocation(); } else Log.e("SJJ", "locClient is null or not started"); Log.e("SJJ","service get number ="+number); } } public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { if (location == null) return ; StringBuffer sb = new StringBuffer(256); sb.append("time : "); sb.append(location.getTime()); sb.append("\nerror code : "); sb.append(location.getLocType()); sb.append("\nlatitude : "); sb.append(location.getLatitude()); sb.append("\nlontitude : "); sb.append(location.getLongitude()); sb.append("\nradius : "); sb.append(location.getRadius()); if (location.getLocType() == BDLocation.TypeGpsLocation){ sb.append("\nspeed : "); sb.append(location.getSpeed()); sb.append("\nsatellite : "); sb.append(location.getSatelliteNumber()); } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){ sb.append("\naddr : "); sb.append(location.getAddrStr()); } content=location.getAddrStr(); Log.e("SJJ","service"+content); sendMessage(number,content); mLocationClient.stop(); SendMessageService.this.stopSelf(); } } void sendMessage(String number,String content) { PendingIntent pi= PendingIntent.getService(SendMessageService.this, 0, new Intent(), 0); smsMg.sendTextMessage(number, null, content, pi, null); }}
看下结果
先给10010发条短信,然后这个app就自动把地址回过去了。。。对,我在上海。。。
如果你要给男朋友装怎么办。。。不要写Activity啊,偷偷给他装,然后就有个service再默默的跑,连图标都没有。。。不行,这样太贱了
- 老人防走失小应用(利用百度地图接口)
- 推荐一款安卓软件:爱家定位,及时定位知道老人和小孩的位置防走失
- 百度地图API应用小实例
- 页面中插入百度地图(利用百度地图API)
- 利用Python调用百度地图接口爬取小区信息
- 利用百度地图 接口 获取当前所在的省份
- 百度地图接口
- 百度地图接口
- 百度地图转换接口
- 百度地图接口开发
- 百度地图接口调用
- 百度地图API接口
- 百度地图接口
- 利用百度地图提供的API做的应用
- 利用百度地图api开发的应用实例
- 利用百度地图定位
- 小白做百度地图
- 百度地图小案例
- 机器学习--概述
- C++ 实现txt文件的读取
- 运动目标跟踪算法简单总结(六)
- Java面试题全集(上)
- Opencv学习笔记(五)Harris角点检测
- 老人防走失小应用(利用百度地图接口)
- 做静态页面遇到的小问题
- 学习html5第三天
- 嵌入式系统的虚拟化介绍
- 图的遍历之BFS广度优先遍历C++实现
- 学习记录
- 幻想战姬PVP模拟器(二)
- 第六周【项目2-我的数组类】2
- 高级数据结构