• 电话状态的监听。响铃,静止,接起


    复制代码
    package com.sharpcj.telephonestatelistenerdemo;
    
    import android.content.Context;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.telephony.PhoneStateListener;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    
    public class MainActivity extends AppCompatActivity {
    
        private TelephonyManager mTelephonyManager;
        private static final String TAG = "sharpcj:";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            mTelephonyManager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
            //不要忘记了权限的添加
            //<uses-permission Android:name="android.permission.READ_PHONE_STATE" />
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            mTelephonyManager.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_NONE);
        }
    
        class MyPhoneStateListener extends PhoneStateListener {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                /**
                 * 返回电话状态
                 *
                 * CALL_STATE_IDLE 无任何状态时
                 * CALL_STATE_OFFHOOK 接起电话时
                 * CALL_STATE_RINGING 电话进来时
                 */
                switch (state) {
                    case TelephonyManager.CALL_STATE_IDLE://无任何状态时
                        logi("CALL_STATE_IDLE");
                        break;
                    case TelephonyManager.CALL_STATE_RINGING://电话进来时
                        logi("CALL_STATE_RINGING");
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK://接起电话时
                        logi("CALL_STATE_OFFHOOK");
                        break;
                    default:
                        super.onCallStateChanged(state, incomingNumber);
                        break;
                }
            }
        }
    
    
        public void logi(String s) {
            Log.i(TAG, "joy:---" + s);
        }
    }
    复制代码
  • 相关阅读:
    Unity3D游戏高性能战争迷雾系统实现
    Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践
    怪异现象:执行静态方法,其类的静态构造函数没有执行
    MVC项目不同域之间的UrlRouting
    Quartz+TopShelf实现Windows服务作业调度
    MongoDB数据仓储
    Redis作为缓存服务器
    SignalR实现在线聊天室功能
    DDD-EF-数据仓储
    领域Command
  • 原文地址:https://www.cnblogs.com/wuyuxin/p/7019905.html
Copyright © 2020-2023  润新知