【问题标题】:Getting the data of a dial pad while on a call在通话时获取拨号盘的数据
【发布时间】:2019-09-18 02:45:18
【问题描述】:

我是 Android 新手,我正在创建一个应用程序,用户将在该应用程序中接到来自号码的呼叫,然后开始播放 .mp3 文件,用户可以根据该号码从拨号盘单击任何号码我必须执行操作.

为此,我创建了一个 BroadcastReceiver,它将检查电话状态并在 TelephonyManager.CALL_STATE_OFFHOOK:我正在播放 mp3 剪辑。

现在我不知道如何对按下付费键做出反应。

import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.KeyEvent;
import android.view.View;

import java.lang.reflect.Method;

import static android.content.Context.TELEPHONY_SERVICE;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        PhoneStateChangeListener pscl = new PhoneStateChangeListener(context);
        TelephonyManager tm = (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);
        tm.listen(pscl, PhoneStateListener.LISTEN_CALL_STATE);
    }
}
class PhoneStateChangeListener extends PhoneStateListener {
    Context context;
    boolean isCalling=false;
    MediaPlayer mp=null;
    PhoneStateChangeListener(Context context){
        this.context=context;
    }

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        super.onCallStateChanged(state,incomingNumber);
        mp=MediaPlayer.create(context,R.raw.abc);
        switch(state){
            case TelephonyManager.CALL_STATE_OFFHOOK:
                isCalling=true;
                mp.start();
                break;
        }
    }
}

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以对按下的拨号盘键做出如下反应:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
             // Do Code here
        }
    else if(keyCode == KeyEvent.KEYCODE_0) {
    
       }
    else if(keyCode == KeyEvent.KEYCODE_1) {
    
       }
    return super.onKeyDown(keyCode, event);}
    

    您可以从here 获得更多关于按键的信息,例如按下 1 或 2 等。

    【讨论】:

    • 感谢您的回答,请您告诉我必须在哪里编写此代码
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多