打开gps定位-->发回短信&拦截指令&锁屏&销毁数据&ComponentName
来源:互联网 发布:vb表格控件 编辑:程序博客网 时间:2024/05/04 19:38
经纬度
地球上的坐标
定位原理
1.gps定位:基于 人造卫星
精度 准确
受建筑物影响 室内
2.基站定位(辅助)
精度没有gps准确
受基站数量
3.ip定位 静态ip
goolge定位框架
android.jar
<!-- 定位权限 -->
<!-- FINE精度高 gps -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- COARSE粗糙 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 使用模拟 -->
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
① 创建定位服务LocationManager
② 创建条件Criteria
③ 创建监听器 LocationListener
借助地图 25.9667,118.5333 格式 纬度,经度
谷歌定位
中国 gcj02 火星坐标
国外wgs84 gps坐标 地球坐标
<span style="font-size:14px;">public class GpsUtils {private static LocationManager lm;/** * 打开定位 * * @param context */public static void startLocation(Context context) {// ① 创建定位服务LocationManagerlm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);// ② 创建条件CriteriaList<String> pList = lm.getAllProviders();// Provider-->定位器for (String temp : pList) {Log.i("wzx", temp);MyLocationListener listener = new MyLocationListener(context);// requestLocationUpdates开始定位// lm.requestLocationUpdates(provider定位器, minTime 时间间隔, minDistance// 最小移动距离,监听器);lm.requestLocationUpdates(temp, 1000, 0, listener);}// 09-11 06:45:20.396: I/wzx(2921): passive// 09-11 06:45:20.396: I/wzx(2921): gpsCriteria c = new Criteria();// Criteria:查询条件// 查询最适配的定位方式。// 1.费用c.setCostAllowed(true);// 2.电量 耗电c.setPowerRequirement(Criteria.POWER_HIGH);// gps特别耗电// 3.精度 精确 gpsAccuracy度c.setAccuracy(Criteria.ACCURACY_FINE);String bestProvider = lm.getBestProvider(c, true);Log.i("wzx", "bestProvider=" + bestProvider);// ③ 创建监听器 LocationListener 比方 :ListView OnItemClickListener// 监听器通常帮助我们获取参数}public static class MyLocationListener implements LocationListener {private Context context;public MyLocationListener(Context context) {super();this.context = context;}// 监听获取位置变化// Location :封装经纬 度坐标的对象@Overridepublic void onLocationChanged(Location location) {// 移除lm.removeUpdates(this);Log.i("wzx", "longitude:" + location.getLongitude() + " latitude:" + location.getAltitude()); //短信发回手机PointDouble newPoint=OffsetUtils.getRightLocation(context, location.getLongitude(), location.getLatitude());Log.i("wzx", "new longitude:" +newPoint.x + " latitude:" + newPoint.y);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}}}</span>
1.1. 拦截指令
① 创建BroadCastReceiver
② Action是类型
③ 权限 短信内容 涉隐私
④ 有序广播 要设置优先级priority
⑤ 解析byte[]-->SmsMessage
<span style="font-size:14px;">public class SmsReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub// ① 创建BroadCastReceiver// ② Action是类型// ③ 权限 短信内容 涉隐私// ④ 有序广播 要设置优先级priorityint max = Integer.MAX_VALUE;// ⑤ 解析byte[]-->SmsMessageLog.i("wzx", "onReceive----接收短信" + intent.getAction());// pdus 协议单元 kmObject[] objs = (Object[]) intent.getExtras().get("pdus");for (Object obj : objs) {byte[] smsBytes = (byte[]) obj;SmsMessage sm = SmsMessage.createFromPdu(smsBytes);String address = sm.getOriginatingAddress();// 获取发送号码String body = sm.getMessageBody();if ("$BJ$".equals(body.trim())) {Log.i("wzx", "$BJ$");abortBroadcast();//销毁广播} else if ("$GPS$".equals(body.trim())) {Log.i("wzx", "$GPS$");abortBroadcast();//销毁广播} else if ("$XH$".equals(body.trim())) {Log.i("wzx", "$XH$");abortBroadcast();//销毁广播} else if ("$SP$".equals(body.trim())) {Log.i("wzx", "$SP$");abortBroadcast();//销毁广播}}// 解析}} <uses-permission android:name="android.permission.RECEIVE_SMS" /> <receiver android:name="com.itheima.mobilesafe.receiver.SmsReceiver"> <intent-filter android:priority="2147483647"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver></span>
1.2. 锁屏
<span style="font-size:14px;">public class DeviceUtils {/** * 锁屏 * * @param context */public static void lockScreen(Context context) {// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);// dpm重置 密码dpm.resetPassword("123", 0);//调用锁屏dpm.lockNow();}</span>
1.3. 销毁数据
<span style="font-size:14px;">/** * 重置 手机 sd * @param context */public static void wipe(Context context){// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);//重置 dpm.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);//sd格式化}}</span>
1.4. 超级管理者权限
权限 管理员权限 (按照开发者文档)
http://android.xsoftlab.net/guide/topics/admin/device-admin.html
1, 配置权限描述文件 做减法
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<!-- 重置 -->
<reset-password />
<!-- 锁屏 -->
<force-lock />
<!-- 重置手机 -->
<wipe-data />
<!-- <limit-password /> -->
<!-- <watch-login /> -->
<!-- <expire-password /> -->
<!-- <encrypted-storage /> -->
<!-- <disable-camera /> -->
</uses-policies>
</device-admin>
2, 配置Reciever的子类 BroadCastreceiver
|---DeviceAdminReceiver 接收授权成功的广播
<!-- 配置 --> <receiver android:name="com.itheima.superadmin.receiver.MobileSafeDeviceAdminReceiver" android:description="@string/desc" android:label="@string/title" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_mobilesafe" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
3,代码激活/失活
<span style="font-size:14px;">/** * 激活 * * @param context */public static void active(Context context) {Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);// ComponentName: 组件属性的对象 举例 <activtity name= <service name <receiver// nameComponentName cn = new ComponentName(context, MobileSafeDeviceAdminReceiver.class);intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);// 打开授权界面context.startActivity(intent);}</span>
<span style="font-size:14px;">/** * 超级管理账号的应用不能被卸载 * * @param context */public static void unactive(Context context) {// ComponentName: 组件属性的对象 举例 <activtity name= <service name <receiver// nameComponentName cn = new ComponentName(context, MobileSafeDeviceAdminReceiver.class);// DevicePolicyManagerDevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);dpm.removeActiveAdmin(cn);}</span>
ComponentName
<span style="font-size:14px;">代表name属性的对象//ComponentName name=new ComponentName(包名, 类名);<activity name//ComponentName name=new ComponentName(getPackageName(), "com.itheima.mobilesafe.act.AToolsActivity");//<activity nameComponentName name=new ComponentName("com.itheima.mobilesafe", "com.itheima.mobilesafe.act.AToolsActivity");//<activity name//Intent intent = new Intent(this, AToolsActivity.class);Intent intent=new Intent();intent.setComponent(name);startActivity(intent);$BJ$</span>
销毁数据
1.删除短信
2.删除联系人
3.删除通话记录 邮箱
4.查询手机所有文件的技术 逐个删除
<span style="font-size:14px;">@ViewInject(R.id.admin_active)Button admin_active;@OnClick(R.id.admin_active)public void admin_active(View view){if(DeviceUtils.isActivity(this)){DeviceUtils.unactive(this);admin_active.setText("点击激活");}else{DeviceUtils.active(this);admin_active.setText("点击取消激活");}}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();if(DeviceUtils.isActivity(this)){admin_active.setText("点击取消激活");}else{admin_active.setText("点击激活");}}</span>
Activity 页面
1.继承
2.重写 (1.布局 分析界面+所有布局+常用控件 设置setContentView2. 写事件)
3.配置
4.打开
快速开发的技巧
style 重用属性
1. 控件 重用属性
2. 作于Activity或者 Applicaton 系统 theme
include 重用布局
selector选择器
使用点九图
点九图的制作 sdk/tools
BroadcastReciever广播接收者 接收系统内的广播 Intent
1.继承
2.重写
3.配置
短信拦截
1.action
2.权限 RECEIVE_SMS
3.priroty
4.解析短信
5.销毁 abortBroadcast();
Boot拦截
1.action
2.权限 RECEIVE_BOOT_COMPELTET
超级管理员
文档完成
功能api
MediaPalyer
播放器
LocationManager
android 集成的定位框架
LocationMnaager核心类 封装复杂的定位过程
Criteria 查询 1.费用 2.精度 3.电量
LocationListener 接收定位信息的监听器
权限 ACCESS_FINE_LOCATION
ACCESS_CORSE_LOCATION
ACESS_MOCK_LOCATION
DevicePolicyManager
设备管理 +添加权限
resetPassword
lockNow
wipeData();
- 打开gps定位-->发回短信&拦截指令&锁屏&销毁数据&ComponentName
- Android项目实战--手机卫士10--GPS定位与发送短信指令
- GPS卫星定位、短信收发控制、系统集成
- GPS中提取定位数据
- Android获取GPS定位数据
- GPS/BD1定位数据转换
- GPS 定位模块数据提取
- sim808 gps 定位数据解析
- 判断GPS定位服务是否打开
- VC++提取GPS全球定位系统定位数据
- 解决GPS定位数据转换问题
- 【Android】- Android判断GPS定位是否打开弹出对话框
- GPS定位
- GPS定位
- GPS定位
- GPS定位
- GPS定位
- gps定位
- ACM:蓝桥杯:开灯问题
- 算法与数据结构之简单排序
- 【leetcode】96. Unique Binary Search Trees
- 网络 协议
- 农村土地确权之调查公示 —— ArcGIS中地块分布图标注设置说明[地块分布图制作]
- 打开gps定位-->发回短信&拦截指令&锁屏&销毁数据&ComponentName
- 利用wrapper打包java编写的服务注册window服务
- 链表
- Android如何隐藏底部虚拟按键
- 第三方轮子处理内容的汇总
- 从零搭建一个网站
- Win 7 64位 单机Spark安装
- 【GOF23设计模式】_外观模式_公司注册流程_迪米特法则JAVA241
- Android中自定义View