ヘッドセットのセンター ボタンに問題があります。私がやろうとしているのは、ヘッドセットのボタンが押されている間に音を録音することです。ボタンを放すと、オーディオ録音が停止します。これが私のコードです:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView) findViewById(R.id.text);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK && shouldContinue == true) {
shouldContinue = false;
text.setText("KEY DOWN");
audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder
.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
audioRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
audioRecorder.setOutputFile(Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/test.3gp");
try {
audioRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
audioRecorder.start();
}
return false;
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK) {
text.setText("KEY UP");
audioRecorder.stop();
audioRecorder.release();
shouldContinue=true;
}
return false;
}
問題は、ヘッドセットのボタンを押したままにすると、マイクが何らかの形で無効になり、空のサウンド ファイルが生成されることですが、そのボタンを押したままにしなくても (たとえば、onCreate で audioRecorder コードを移動すると)、すべて正常に動作します (サウンドが録音されます)。
中央のヘッドセット ボタンを押した状態でサウンドを録音できるかどうか、またはハードウェアの問題であり、それについては何もできないかどうかを知りたいだけです。