bmw90 2016-03-13 10:53 采纳率: 0%
浏览 1503

安卓中内部类调用问题

在外部类方法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

    }

}
  • 写回答

3条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2016-03-13 12:04
    关注

    报错信息是什么,看看日志

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?