我是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;
        }
    }
}

最佳答案

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

@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等。

关于android - 通话时获取拨号盘的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57979685/

10-12 04:25