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;
}



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-data
                android: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 {
       @Override
	public 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值