黑马52期学后总结笔记(四)


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-permissionandroid:name="android.permission.READ_PHONE_STATE" /> 

 

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

  tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

3、自定义监听类MyPhoneStateListener

private class MyPhoneStateListener extendsPhoneStateListener{

              /**

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

               */

              @Override

              public void onCallStateChanged(int state,String incomingNumber) {

                     super.onCallStateChanged(state,incomingNumber);

                     switch(state) {

                     caseTelephonyManager.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(newOnClickListener() {

                    

                     @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()校验检查一个服务是否开启;

 

/**

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

        */

      

       publicstatic boolean isServiceRunning(Context context,String serviceName){

             

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

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

           for(RunningServiceInfo info : infos){

                  StringclassName = 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 = newOutCallReceiver();

IntentFilter filter = newIntentFilter();

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

 

 

 取消在onDestroy()

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

 unregisterReceiver(receiver);

 receiver = null;

 

演示功能

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值