手机卫士04_ 手机定位_超级管理员_数据库

1.1 定位功能简介:

常见的定位方式:

①网络定位:(IP地址),拨号上网一般是动态分配,如果网吧公司,就是静态分配的.

比较有名的数据库:纯真Ip数据库,有很多公开的ip信息

根据ip地址定位.可能很准确,也可能只是一个大概的范围

②基站定位:必须有手机卡才能基站定位

根据手机与基站联系的信号强弱+算法定位.

定位效果:可能很准确,(与基站位置相关,周围基站越多越近效果越好.)

③GPS定位:采用卫星定位

利用卫星的位置与手机GPS模块的建立联系,通过算法判断位置.

至少需要三颗卫星,获取手机手机的位置.(头顶必须空旷,不然信号穿透效果很渣)

目前:agps模块,因为手机搜索卫星定位需要一定的时间,所以agps会先获取网络位置,大体的位置获取到了之后,再根据卫星定位获取详细位置.

精确度很高:五米-十米左右的范围.

1.2 获取手机的经纬度.

利用服务LocationManager lm = getSystemService(“LOCATION_SERVICE”);//位置管理服务

//面向对象的思想

List<String>lm.getAllproviders();//获取所有支持的位置信息,返回一个list集合

Passive;基站定位 gps:gps定位,真实手机还支持网络定位,wifi 定制

lm.requestLoactionUpdates(1,2,3,4)//请求位置的更新

1,provider 请求位置的方式:passive,gps,.....

2,minTime 请求的间隔  毫秒值

3,minDistance 请求位移的距离

4,listener 位置的提供者监听(带一些回调的方法)

4,实现LocationListener接口

重写的方法:

①onProviderEnabled //当位置提供者可用的时候

②onProviderDisabled //不可用的时候

③onStateChanged()//状态变化,可用>>不可用,不可用>>可用,当上面两个方法被调用,它就会被调用

④onLocationChanged(location)//当手机位置发生了变化就会被调用

location.getAccuracy()//获取定位精确度

location.getLatitude();//获取维度

location.getLongitude();//获取经度

额外:①ACCESS_FINE_LOCATION 权限//得到手机精准的位置

DDMS 可以设置模拟器的经纬度.

②注册了监听器之后要记得取消监听器,耗电很快的

onDestory() lm.removeUpdates(listener);

③如果GPS响应太慢,可以把距离大小,时间间隔设置为0,但是耗电更快

2 火星坐标系统

2.1 使用网站:map.baidu.com //百度把 WEB端的屏蔽掉了,手机端有

所以使用:ditu.google.cn可以直接搜索经纬度 //因确实挺

定位位置超出预期:火星坐标系统,对坐标进行了加密操作(国防安全防御系统)

错误的地图就对上错误的坐标,所以在国内地图没问题.而在国外的地图是不准确的.

一般导航软件都加入了国家保密算法,这样就可以跟导航电子地图匹配,不过这个保密算法是需要钱去买的,才能得到这一套COM接口.

地球坐标与火星坐标在网上已经有互换的算法了,可以通过这套api转换坐标.

个人小范围使用,最好不要在公开场合使用,会被查水表哦.

2.2 api:Modifyoffset.java(网上可以下到)

使用方式,拷贝该文件,创建它的对象(is)//需要一个输入流

//要把对应的数据库文件放到项目下

Mo.s2c(new PointDouble(经度,纬度))//standrad火星坐标>>实际坐标

3,手机防盗获取经纬度

①获取经纬度是一个耗时操作,但是广播接收者的生命周期比较短,所以需要开启一个后台的服务,在服务里获取手机的位置,这样即使应用被关闭了,在后台也能长期存在获取到位置信息,更符合要求.

分包:mobliesafe.service,创建服务,配置清单文件,服务是没有界面的

②在服务类中

定义一个LocationManager,并初始化, getSystemService(Location_SERVICE);

//获取所有的位置提供者lm.getAllProviders()//返回list集合

判断是否有GPS位置提供者.并且这个集合的长度大于0(防止空指针)

lm.requestLoctionUpdates(位置提供者,0,0,监听器)//请求间隔,位置间隔都为0

//自定义监听器类(方便关闭获取GPS信息)

③获取经纬度,在监听器中onLocationChanged()中参数Location.getLatitude()//获取.

保存在sp中

然后通过短信发送给安全号码

额外:发送短信之后,停止监听器,lm.removerUpdates(listenser);listener=null

停止服务stopSelf()//停止自身服务

权限:FINE_LOCATION,COARSE_LOCATION(大体位置)

④在接收指令的receiver中,开启该服务.

4,立刻清楚数据和远程锁屏操作

4.1 设备的超级管理员

查看api文档:Develop>>API Guides>>Administration>>Device Policies

作用:可以同步邮箱邮件应用,设置密码类型,远程删除数据,加密硬盘,禁用照相机,锁定设备,很多操作它都可以执行

4.2, 使用步骤:

①创建类,继承DeviceAdminReceiver.

②拷贝文档中的清单文件配置,需要更改的有receiver对应的全路径.

<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"
        android:label="@string/sample_device_admin"
        android:description="@string/sample_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_sample" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

Label:用户可读的说明,任意字符串(例如:手机卫士管理员)

Description:对Label的详细说明.

<meta-data>//原数据节点,不要修改name属性

resource资源文件:声明所用的安全权限.

③拷贝文档中device-admin的权限代码,创建一个XML文件夹,然后再创建一个文件(Device_admin_simple)保存

<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

额外:在系统设置中,安全>>设备管理器>>可以看到设备管理员,需要点击激活

4.3 远程锁屏和清楚数据的代码实现

//得到超级管理员管理器

DevicePolicyManager dpm = context.getSystemService(context.DEVICE_POLICY_SERVICE);

dpm.wipeData()//清楚数据,参数:WIPE_EXTERNAL_STORAGE//清楚外部内部所有.

0,只清除手机内部存储数据

//这个指令模拟器并不支持,有效果,但无作用,真实手机不要随便尝试

dpm.resetPassword(“密码”,0);//设置锁屏密码

dpm.lockNow()//立刻锁定屏幕

//记得最后把短信截取掉abortBroadCast();

5.一键锁屏应用:点击应用之后,手机就锁屏了

①点击应用就锁屏,可以通过onCreate()方法实现  ,这里用一个按钮去实现

DevicePolicyManager dpm = getSystemService(DEVICE_POLICY_RECEIVER);

Dpm.locknow();//立即锁屏

直接运行会提示:缺少超级管理员组件No active admin owned byXXX

②创建特殊的广播接收者

③配置清单文件,拷贝对应的receiver节点,修改需要修改的属性.

④拷贝权限文件,为了以防万一,不引起用户警惕,只保留force-lock标签锁屏.

额外,①需要先激活设备超级管理员(在应用里)

②一旦这个应用激活了超级管理员就不能被卸载和清除了.

卸载步骤:取消超级管理员,取消激活即可.

5.2,锁屏应用的优化:用户可能没激活应用,也可能不会取消

①执行dpm.locknow()之前判断一下是否激活了超级管理员权限

dpm.isAdminActive(who);//哪一个组件被激活了权限,返回 boolean

ComponentName who = new ComponentName(this,MyAdmin.class);

②判断是否激活了权限,并提示用户需要激活

③担心用户不知道怎么激活权限,再创建一个按钮,打开设备管理员的激活页面.

帮助文档里有Enabling the application(在超级管理员页面中)//启动超级管理页面.

下面有一段实例代码,复制即可.修改一些参数即可(激活的组件who,描述文本)

④添加一个卸载按钮帮助用户卸载

取消设备激活超级管理员:获取dpm

dpm.removeActivityAdmin(who);//取消对应组件的超级管理员

卸载当前应用:

创建意图对象,复制上层源码的packageInStaller清单文件中uninstallerativty对应的意图过滤器

注意:intent.setData(Uri.parse(“package:” + 包名(getPackageName())))

5.3 手机防盗的细节处理

5.3.1防盗界面的密码加密:md5加密解释

MessageDigest digest = MessageDigest.getInStance(“md5”);//md5是不可逆的

Md5是数字的hash摘要算法,原文>>>密文,密文XXX原文

Byte[] result = Digest.digest(byte[]);

遍历result,把每个byte转换成16进制数;

byte b ,

Int a =b&0xff 转换成int数//ff是 二进制11111111,10进制的255

Intent.toHexString(转换后的数)

然后用StringBuffer把这个byte转换的int数给拼接出来

网上的破解MD5,实际上是把大量的数据进行MD5加密之后保存在数据库,用户将查询的MD5加密串输入进去,会匹配存在的MD5串,匹配到就显示原字符串(本质还是不可逆的)

//一般向银行会对密码进行10-20次重复加密,这样得出的md5更是无法查询到了

//也可以在转换的时候b&0XFF + XX数,俗称加盐,这样也是无法查询到的

5.3.2 抽取成一个工具类,在保存密码的时候通过md5加密即可.比对密码的时候也进行加密后的字符串进行比较

6,骚扰拦截模块

业务需求:不想接收某个人的短信或电话,添加进黑名单,然后这个短信和电话就会被拦截了.以后接收到这个信息就不会再提醒了.

6.1 创建骚扰拦截的界面activity,配置清单文件,创建布局文件

6.2 标题,黑名单列表,添加按钮(右上角,设置状态选择器)

考虑到黑名单列表可能比较多,不适合放到SharedPreferences里,放到数据库里.

6.3 黑名单数据库

表字段:id标志,姓名,号码,拦截模式(手机0,短信1,两者都拦截2);

创建db包

①开启帮助类,继承父类构造,super(上下文,表名称,游标工厂,版本号)

onCreate()里定义表的SQL语句,db.execSQL(XXXX);

_id integer primary key autoincrement,主键自增长

②数据库的DAO包,实现具体的业务逻辑

在构造方法里就初始化openHelper,传入上下文

增删改查,修改的时候只需要修改拦截模式就行,因为号码输错了一般人都会删掉.

查询实际上也只是查询拦截模式而已.

6.4 单元测试 数据库增删改查

①创建一个类继承 AndroidTestCast,所有的测试逻辑都应该向测试框架抛出异常

需要上下文就getContext()

②配置清单文件,

指令集<Instumenttation>配置name,targetpackage测试的包.

Application中配置标签,导入需要的jar包,use-library

7.黑名单号码添加界面

点击添加按钮,应该就跳转到黑名单号码的添加页面

要带有返回值startActivityForResult(intent);

额外:一键锁屏的两个界面

添加两个Activity主入口就可以了

但是需要给另一个界面单独开启进程

在activity中 属性

process = “:process.sub”

启动模式:launchMode = “singleInstance”

posted on 2016-06-14 00:22 抓根宝 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/adventurer/p/5582564.html

手机卫士04_ 手机定位_超级管理员_数据库相关推荐

  1. android 短信位置,浅析Android手机卫士之手机实现短信指令获取位置

    推荐阅读: 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy ...

  2. 【每日新闻】手机安全日益重要,360手机卫士构建手机安全生态链 | 工信部:未来电子信息行业发展将聚焦5G技术

    每一个企业级的人  都置顶了 中国软件网 中国软件网  为你带来最新鲜的行业干货 小编点评 我们希望邀请更多的生态伙伴 共同探讨 共同行动 2018年4月25日 北京站,不见不散! 趋势洞察 生态视角 ...

  3. android手机卫士,安卓手机卫士

    权限列表[安卓手机卫士] ● (基于网络的)粗略位置 访问粗略的位置源(例如蜂窝网络数据库)以确定手机的大体位置(如果可以).恶意应用程序可借此确定您所处的大体位置. ● 获取定位 允许应用通过网络或 ...

  4. 手机卫士项目——手机防盗时候——选择手机联系人

    一.这个是我个人从手机卫士抽取出来的一个demo获取手机中的联系人由于水平有限,不废话了直接上代码! 1.布局文件: <LinearLayout xmlns:android="http ...

  5. 中兴f477v2超级管理员_中兴F650光猫修复

    广东电信,昨天碰到中兴F650的光猫被ITMS远程升级,然后就用不了.垃圾电信的远程升级. 各种找方法解决,最终综合各种方法解决了问题. 预先准备LOID码,如果之前能正常用,理论上路由器里是存有LO ...

  6. ssh 远程锁住解锁_超级管理员被锁定,如何解锁?

    经常听到同事说忘记系统的超级管理员密码,在此我说一说平时解决的几种方法. windows 第一种:下载最新的PE 工具盘,有老毛桃PE盘和深度PE工具盘比较好用. 首先,设定从光驱启动,然后加载到PE ...

  7. django启用超级管理员_如何启用和连接Django管理界面

    django启用超级管理员 介绍 (Introduction) If you have followed along in the Django Development series, you've ...

  8. 手机卫士项目——手机防盗GPS追踪技术

    1.个人感想由于随着手机不停的位置移动,手机防盗这款功能  是假设手机在丢失的情况下  要在后台偷偷的运行所以要用到Service服务(四大组件之一) package com.android.mobi ...

  9. 360手机卫士经典案例分析

    摘要 对360手机卫士在保持和吸引顾客方面的独特之处进行了研究,从360手机卫士产品本身,到与产品有关的一系列渠道.定价和促销的营销组合,分析360手机卫士给顾客传递和传播的价值,并结合顾客感知价值这 ...

最新文章

  1. 机器人视觉三维成像技术全解析
  2. JDK5 新特性之 可变参数的方法(2)---asList
  3. BZOJ 2456: mode 水题
  4. Python实例 -- .git格式转为.png格式
  5. php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置
  6. Vmware上安装RedHat Linux 7.3操作系统手册
  7. ckeditor3 配置
  8. ActiveMq笔记3-AMQ高可用性理论
  9. Oracle数据库应用系统结构
  10. win10下安装mysql5.6 zip形式步骤
  11. C#数组Array的基础知识及二位数组和数组的数组的区别
  12. 【Django】The view userWeb.views. didn‘t return an HttpResponse object. It returned None instead.
  13. 【机器学习】数据处理详解
  14. [渝粤教育] 西南科技大学 成本会计 在线考试复习资料(1)
  15. 在线答题助手c语言源码,很早之前发的逆水寒答题助手,开源!!自己可以修改成任何答题器源码!~~...
  16. PHP手机深色模式,哪些手机深色模式比较好?六大主流品牌手机深色模式对比介绍...
  17. java 读取gzip_Java读取GZIP
  18. 智能优化算法:饥饿游戏搜索算法-附代码
  19. shell编程中空格的使用
  20. 全国计算机四级——操作系统原理笔记

热门文章

  1. C# 纷享销客API接口调用
  2. java 怪物猎人ol_黑魂三还能中途改变性别吗 | 手游网游页游攻略大全
  3. helm chart函数
  4. java—数组的3种声明方式
  5. 服务器清理内存shell脚本
  6. java dijkstra算法 指定源宿_一种路径计算的方法和装置与流程
  7. python爬虫参考文献_02-认识python爬虫
  8. el-popover在列表里循环使用,关闭不了????
  9. 文墨绘学:孩子最反感父母的几种做法
  10. getpid php,对python中的os.getpid()和os.fork()函数详解