android的电话监听

android的电话监听

新建一个项目,结构图如下:

PhoneService:
package com.demo.tingdianhua;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.telecom.TelecomManager;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class PhoneService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {

        System.out.println("onCreate");
        //1.获取telephone的实例
        TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

        //2.注册电话的监听
        tm.listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    public class MyPhoneStateListener extends PhoneStateListener {

        //当电话设置状态发生改变的时候调用
        public void onCallStateChanged(int state, String phoneNumber) {
            System.out.println("state==>"+state);
            System.out.println("phoneNumber==>"+phoneNumber);

            //具体判断下电话得状态
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE:

                    System.out.println("停止");
                    break;

                case TelephonyManager.CALL_STATE_OFFHOOK://接听状态
                    System.out.println("开始录");

                    break;

                case TelephonyManager.CALL_STATE_RINGING://电话响铃状态

                    System.out.println("准备一个录音机");

                    break;

                default:

                    break;

            }

            super.onCallStateChanged(state, phoneNumber);
        }
    }

}
MainActivity:
package com.demo.tingdianhua;

import android.content.Intent;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    private String [] phone={
            "android.permission.READ_PHONE_STATE"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityCompat.requestPermissions(this,phone,1);
    }

    public void clickphone(View view) {
        Intent intent = new Intent(MainActivity.this,PhoneService.class);
        startService(intent);
    }
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:onClick="clickphone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开启服务"
        />

</android.support.constraint.ConstraintLayout>
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.demo.tingdianhua">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".PhoneService"
            android:enabled="true"
            android:exported="true"></service>
    </application>

</manifest>

原文地址:https://www.cnblogs.com/charlypage/p/10316719.html

时间: 2024-10-10 11:13:18

android的电话监听的相关文章

【android基础篇】自定义广播和电话监听

I,自定义广播 前面所说的都是接收短信,外拨电话等都是系统所有的广播,而其实我们可以自己自定义一个广播,并且写一个广播接收者来玩玩. 1) 在按钮的点击方法中,发送自定义的广播: 1 public void click(View view){ 2 /** 3 * 发送自定义的广播 4 */ 5 Intent intent=new Intent(); 6 //设置意图的动作,要和自定义的频道要一致 7 intent.setAction("www.wangchengxiang.com");

赵雅智_service电话监听2加接通电话录音

步骤: 创建CallStateService继承Service 取得电话服务 监听电话动作 电话监听的对象 没有电话时 停止刻录 重设 刻录完成一定要释放资源 电话响铃时 从麦克风采集声音 内容输出格式 音频编码方式 获取sd卡目录并存入 电话接通时 开始录制 电话监听的行为 启动service 注册service并添加监听电话状态的权限 监听电话状态权限 sd卡读写权限 音频录制权限 AndroidManifest.xml <?xml version="1.0" encodin

赵雅智_BroadcastReceiver电话监听

AndroidManifest.xml 注冊广播接收者 加入权限 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android_ipphone" android:versionCode="1

quick-cocos2d-x android返回键监听并实现原生退出对话框

这两天终于闲了一下,就顺手又把quick捡起来又学了学,一直都觉得quick比cocos2dx那套lua绑定要方便许多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇. 首先说明一下使用的quick版本--2.2.5. 直接上代码 function MainScene:addBackEvent() if device.platform == "android" then self.touchLayer = display.newLayer() self.touchL

Android短信监听(三)——利用Loader实现短信监听

MainActivity如下: package cc.c; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; import android.content.Loader; import android.database.Curs

Android短信监听(二)——利用ContentObserver实现短信监听

MainActivity如下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageListener; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; import android.app.Activity; /** *

Android短信监听(一)——利用BroadcastReceiver实现短信监听

MainActivity如下: package cc.testsmsbroadcastreceiver; import cc.testsmsbroadcastreceiver.SMSBroadcastReceiver.MessageListener; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; /** * Demo描述: * 利用BroadcastReceiver实现

android应用程序监听SMS Intent广播

当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent. 对于应用程序监听SMS Intent广播,首先需要添加RECEIVE_SMS权限.通过在应用程序manifest中添加一个uses-permission,如下面的片段所示: <uses-permission android:name="android.permission.RECEIVE_SMS"/> AndroidMani

Android的Button监听

1.android简单按钮监听----单个监听 start = (Button)findViewById(R.id.btnStart); start.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View v) {                //---do something            }            }); 2.View.OnC