您的位置:首页 > 其它

模仿360安全卫士项目笔记4

2015-12-17 17:46 218 查看



39_抖动和振动效果_32

1、进入模拟器的APIDemo展示点击输入框振动效果(views/animation/shake);

//shake 动摇;摇动;震动;握手的意思

2、找系统sdk\samples\android-16\ApiDemos 并导入工程,如果有错误就解决;

3、找代码搜索代码

功能--》布局文件---》代码

3、找到抖动代码移植;并演示;

4、介绍插入器(interpolator)

5、看APIDemo里views/animation/interpolators 的各种动画

Accelerate 加速动画 decelerate 减速动画

6、Interpolator类似一个函数,计算动画如何播放;



7、振动的代码(Vibrator);

vibrator.vibrate(2000);//振动两秒钟

//-1不重复,非-1为从pattern的指定下标开始重复

long[] pattern = {100,200,100,200,50,50};

vibrator.vibrate(pattern, 1);

8、振动需要权限;

<uses-permission android:name="android.permission.VIBRATE"/>



40_来电号码归属地的显示_25

引入:1、演示打进电话,说明系统的拨号不能改。2、展示土司;

1、创建后台监听来电服务AddressService 并在功能清单文件注册;

检查是否有权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />



2、在AddressService 服务里面注册来电状态(TelephoneManager)

tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

3、自定义监听类MyPhoneStateListener

private class MyPhoneStateListener extends PhoneStateListener{

/**

* 当呼叫状态发生改变的时候回调该方法

*/

@Override

public void onCallStateChanged(int state, String incomingNumber) {

super.onCallStateChanged(state, incomingNumber);

switch (state) {

case TelephonyManager.CALL_ST ATE_RINGING:

String address = AddressDao.getAddress(incomingNumber);

Toast.makeText(getApplicationContext(), address, 1).show();

break;



default:

break;

}

}

}



取消监听:

tm.listen(listener, PhoneStateListener.LISTEN_NONE);

listener = null;



4、在SettingActivity设置中心里配置设置,当点击开启的时候就启动服务,否则相反。然后演示;



布局文件:

<com.itheima.mobilesafe.ui.SettingItemView

android:id="@+id/siv_show_address"

itheima:title="设置号码归属地显示"

itheima:desc_on="号码归属地显示已经打开"

itheima:desc_off="号码归属地显示已经关闭"

android:layout_width="match_parent"

android:layout_height="wrap_content" />







SettingActivity里的代码:



//设置号码归属地显示

siv_show_address = (SettingItemView) findViewById(R.id.siv_show_address);

showAddressIntent = new Intent(this, AddressService.class);

siv_show_address.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(siv_show_address.isCheck()){

siv_show_address.setCheck(false);

stopService(showAddressIntent);

//sp共享偏好去保存

}else{

startService(showAddressIntent);

siv_show_address.setCheck(true);

}

}

});





5、创建一个类ServiceStatusUtils 里面的方法isServiceRunning()校验检查一个服务是否开启;



/**

* 检验一个服务是否还运行,系统所有的

*/

public static boolean isServiceRunning(Context context,String serviceName){

ActivityManager am= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List<RunningServiceInfo> infos = am.getRunningServices(100);

for(RunningServiceInfo info : infos){

String className = info.service.getClassName();

if(className.equals(serviceName)){

return true;

}

}

return false;

}



6、演示效果

41_去电号码归属地的显示_16

1、创建广播接收者OutCallReceiver 并注册;监听电话打出去的广播,需要意图;

<receiver android:name="com.itheima.mobilesafe.receiver.OutCallReceiver">

<intent-filter >

<action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>

</intent-filter>

</receiver>





2、需要监听具体意图和权限;

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>



3、具体代码实现



public class OutCallReceiver extends BroadcastReceiver {



private static final String TAG = "OutCallReceiver";



@Override

public void onReceive(Context context, Intent intent) {

Log.e(TAG, "有电话打出去");

String phone = getResultData();

String address = AddressDao.getAddress(phone);

Toast.makeText(context, address, 0).show();

}



}





4、演示功能:演示勾选的来电去电、 进程杀掉时的来电去电;



5、四大组件 :

activity 、 service 、content provider、

Broadcast Receiver

都需要在功能清单文件注册。

Broadcast Receiver不仅可以在功能清单文件注册还可以用代码注册;



6.移植到AddressService 里和服务生命周期一样。并且演示。

注册在onCreate():

//代码注册一个广播接收者

receiver = new OutCallReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction("android.intent.action.NEW_OUTGOING_CALL")registerReceiver(receiver, filter);





取消在onDestroy():

//代码取消注册一个广播接收者

unregisterReceiver(receiver);

receiver = null;



演示功能





---------------------------------------------------------------------------------------------------------------------------------------------------------

四大组件

Activity

Service

BroadCastReceiver

ContentProvider

全栈工程师

android ios 服务器

归属地图片移动原理



插补器原理





左上右下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: