我是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/