在外部类方法OnCreate中创建了 new Record();内部类,可是在调用内部类的时候从下面?处就开始报错,为什么呢?
java.lang.IllegalStateException异常
@Override
public void onCreate() {
super.onCreate();
final Record record = new Record();
// 获取电话管理者
TelephonyManager telephonyManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
android.util.Log.i("phonelisten", "待机状态");
record.stopRecord();
// Log.INFO(state,"待机状态");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
android.util.Log.i("phonelisten", "通话状态");
// 调用phoneRecord();方法来开启录音
if (record.recorder != null) {
record.startRecord();
}
break;
case TelephonyManager.CALL_STATE_RINGING:
android.util.Log.i("phonelisten", "响铃状态");
break;
default:
break;
}
}
};
// 设置监听时间securityExceptions安全问题需要权限
telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}
// 录音写一个内部类
class Record {
MediaRecorder recorder= new MediaRecorder();
public void startRecord() {
try {
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
String str = Environment.getExternalStorageDirectory()
+ "/receord83.3gp";
recorder.setOutputFile(str);
recorder.prepare();
recorder.start(); // Recording is now started
} catch (Exception e) {
e.printStackTrace();
}
}
public void stopRecord() {
**recorder.stop(); ?????????????????这行开始出错**
recorder.reset(); // You can reuse the object by going back to
recorder.release(); // Now the object cannot be reused
}
}