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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献