mobile_numen_3
1,android的style:
2,使用系统图标资源:
3,在activity切换的时候出现动画效果
4,手机定位
5 DevicePolicyManager 系统的服务
6,广播接受者:
1,android的style:
为了统一样式,通常我们采用style来实现,首先在res/values/新建一个styles.xml文件.如:
<style name="title_text_style"> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textSize">30sp</item> <item name="android:textColor">#ff66ff00</item> <item name="android:paddingTop">10px</item> <item name="android:paddingLeft">5px</item> </style>
并且style是可以继承的,如
<style name="button_pre_style" parent="@style/button_next_style"> <item name="android:text">上一步</item> <item name="android:drawableRight">@drawable/blank</item> <item name="android:drawableLeft">@drawable/previous</item> <item name="android:layout_alignParentRight">false</item> <item name="android:layout_alignParentLeft">true</item> </style>
2,使用系统图标资源:
我们可以解压android.jar发现下面有很多的资源文件(如系统的image和动画),有的是可以用的,而有点是受保护的.
<item name="android:src">@android:drawable/presence_online</item>
3,在activity切换的时候出现动画效果
// activity切换的动画效果//param1表示第二个activity进入的效果//param2表示第一个activity退出的效果overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
其中上面的动画就是系统的动画资源
4,手机定位
1>wifi定位,200--1000m
2>GPS定位 精度很高 精确度达到2-5m,如果在室内有天花板等物体可能接受不到卫星.
获取gps的服务LocationManager
manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
定义监听器
/** * 用于从LocationManager接受通知,当位置改变了. * 这些方法被调用如果LocationListener已经被注册到location manager service通过 * LocationManager.requestLocationUpdates(String, long, float, * LocationListener)方法*/ private class MyLocationLinstener implements LocationListener {// 当位置发生改变的时候 调用的回调 public void onLocationChanged(Location location) {double latitude = location.getLatitude();double longitude = location.getLongitude(); Log.i(TAG, "weizhixinxi :" + latitude + "-" + longitude); Editor editor = sp.edit();// 把经纬度存进sharedPreference里面 editor.putString("lastlocation", "weizhixinxi :" + latitude + "-" + longitude); editor.commit(); } public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { } }
获取最佳提供者
/** * 获取手机的最佳位置提供者*/ public String getProvider() {// 查询条件的组合 Criteria 类似于map集合 Criteria criteria = new Criteria(); criteria.setAltitudeRequired(false); criteria.setCostAllowed(true); criteria.setSpeedRequired(true); criteria.setPowerRequirement(Criteria.POWER_LOW);return manager.getBestProvider(criteria, true); }
注册监听
public String getGPSInfo() {//注册监听,当发生变化的时候会执行监听里面的方法 manager.requestLocationUpdates(getProvider(), 60000, 100,getMyLocationLinstener()); //从sharedpreference里获取数据 String location = sp.getString("lastlocation", "");return location; }
5 DevicePolicyManager 系统的服务
2.2以上的系统支持
如果某个程序注册成Admin设备,那么该程序可以执行如下操作:
1>清楚所有数据.也就是回复出厂设置,这回在不提示确定的情况西删除您的所有数据(模拟器不支持)
2>重置密码.强行更新密码,您需要获得管理员提供的新密码才能登录.
3>限制密码选择.限制您使用密码的类型.
4>监控登录尝试.监控对于登录设备和执行某项的操作的失败
5>强行锁定.控制何时锁定设备,这需要您重新输入密码.
并且一旦注册成功,那么就无法通过正常的方式卸载该程序.
可以在 "设置"-->"位置与安全"-->"选择设备管理器"把程序的勾选状态取消,就可以卸载了.
首先把aidl文件复制到src目录下:
注册admin设备
// 注册Admin设备 try { Method method = Class.forName("android.os.ServiceManager") .getMethod("getService", String.class); IBinder binder = (IBinder) method.invoke(null,new Object[] { Context.DEVICE_POLICY_SERVICE }); IDevicePolicyManager mService = IDevicePolicyManager.Stub .asInterface(binder); ComponentName mAdminName = new ComponentName(this, MyAdmin.class);if (mService != null) {if (!mService.isAdminActive(mAdminName)) { Intent intent = new Intent( DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName); startActivity(intent); } } } catch (Exception e) { e.printStackTrace(); }
定义Receiver
public class MyAdmin extends DeviceAdminReceiver {}
配置Receiver
<receiver android:name=".receiver.MyAdmin" ><meta-dataandroid:name="android.app.device_admin"android:resource="@xml/device_admin" /><intent-filter ><action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></intent-filter></receiver>
xml/device_admin:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"><uses-policies><limit-password /><watch-login /><reset-password /><force-lock /><wipe-data /></uses-policies>
</device-admin>
运行效果:
6,广播接受者:
首先定义感兴趣的广播,如短信接受广播:
public class SmsReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//具体逻辑代码}
}
然后注册广播即可
<receiver android:name=".receiver.SmsReceiver" ><intent-filter android:priority="1000" ><action android:name="android.provider.Telephony.SMS_RECEIVED" ></action></intent-filter></receiver>
转载于:https://www.cnblogs.com/johnny901114/archive/2012/02/07/2341984.html
mobile_numen_3相关推荐
最新文章
- 周鸿祎:quot;安全大脑quot;将成智能经济时代的网络安全中枢
- python(1) - 输入和输出
- tictoc正方形网络模型_反卷积:可视化并理解卷积网络
- 搜索引擎学习(七)解析查询
- SQLServer 事务复制中使用脚本添加某个对象的发布
- mysql master 配置_MySQL双Master配置的方法详解
- 代换-置换网络(SP网络)
- Java工作笔记-Spring Boot + Jdbc + dm7Driver访问数据库(Spring Boot连接达梦数据库)
- 《C陷阱与缺陷》一第1章 词法“陷阱”1.1 =不同于==
- Netty工作笔记0044---Netty案例源码分析
- Python3.0的新改动
- css遮罩层从下往上_CSS:图片自带3px下边距的bug修复
- flutter去掉输入框最大字数显示
- 如何实现伸缩 (折叠) 报表?
- e5 e3 php,e3v3平台和e5平台怎么选择
- fullcalendar实现日程增、删、改、查
- rabbitmq User can only log in via localhost
- python为什么运行不了_终端里为什么无法运行python?
- Groovy 字符串
- CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂
热门文章
- aida64副屏监控_“遥信”在电力监控系统中的重要作用
- pandas转mysql特定列_在pandas.DataFrame.to_sql时指定数据库表的列类型
- mysql timestamp 转型_MySQL的timestamp类型自动更新问题【转】
- 造句简单_零基础也能说一口流利英语,用简单的you are造句学英语
- java 顺序栈_java用顺序栈实现数制转换 求完整程序!!
- nginx添加stream模块1.20
- Rocket 架构设计
- 成都大学的计算机排名,成都除了成都大学,还有2所985、4所211,含金量很高
- shell脚本教学进阶——Linux三大文本处理工具之grep
- html创建php,php-从html创建图像