私はチューナーアプリを持っていて、リスニングマイク用にAudio Recordオブジェクトを使用しています。私はそれがほとんどのデバイスとアンドロイドバージョン(もAndroid 6)のために正常に動作することを理解したいが、私はサムスンS7携帯電話で顧客からのエラー報告を受けた。私はこのエラーを避けるためにここに同様の投稿を見て、それは私の多くを助けた。しかし、今私は他のAndroid 6デバイスで正常に動作している間S7携帯電話だけがこのエラーを与える理由を理解できません。startRecording()がSamsung S7 Phoneの初期化されていないAudioRecordで呼び出されました
P.S.私はS7電話を持っていないので、何かを試す機会がありませんでした。私は似たような問題を抱えている人がいて、S7の電話機で問題が起きる可能性があるのだろうかと思います何か案は?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
initAudioRecord(44100, 2048);
.....
}
public void initAudioRecord(int sampleRateInHz, int bufferSizeInBytes) {
AudioRecord audioRecord = AudioRecordInstance(sampleRateInHz, bufferSizeInBytes);
if (audioRecord.getState() != AudioRecord.STATE_UNINITIALIZED) {
if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_STOPPED) {
audioRecord.stop();
}
audioRecord.release();
audioRecord = AudioRecordInstance(sampleRateInHz, bufferSizeInBytes);
}
audioRecord.startRecording();
}
public AudioRecord AudioRecordInstance(int sampleRateInHz, int bufferSizeInBytes){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
return new AudioRecord.Builder()
.setAudioSource(MediaRecorder.AudioSource.MIC)
.setAudioFormat(new AudioFormat.Builder()
.setEncoding(AudioFormat.ENCODING_PCM_16BIT)
.setSampleRate(sampleRateInHz)
.setChannelMask(AudioFormat.CHANNEL_IN_MONO)
.build())
.setBufferSizeInBytes(2*bufferSizeInBytes)
.build();
}else{
return new AudioRecord(
MediaRecorder.AudioSource.MIC,
sampleRateInHz,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes * 2);
}
}
}
LogCat:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tuner/com.tuner.TunerActivity}: java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
関連コードを投稿してください。そんなあなたの質問に答えることはできません。 –
ねえ、私はコードを追加しました。 – uguboz
logcat出力も投稿してください。 –