Run adb bugreport and take a look at the kernel log. You should see
something like this:
> Hi,
> I've written a little program (see below) to record audio using
> MediaRecorder. While everything works fine in the emulator (SDK1r2),
> the program does not work on the real phone (HTC G1). On the phone,
> after pressing the start button, the audio file is created, but no
> content is written to it (i.e. the file size remains 0). Also, no
> exception is shown in logcat, and no AudioStreamInGeneric events are
> generated (such events are generated when running the program on the
> emulator).
> Is there maybe a setting on the phone that I have to turn on (or off)?
> Or am I missing something else?
> I've set the permission to record audio in the android-manifest.xml
> file using
> <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-
> permission>
> Thanks for any help!
> Michael
> ------------------------------
> My program code:
> package ch.ethz.dcg.mictest;
> import android.app.Activity;
> import android.media.MediaRecorder;
> import android.os.Bundle;
> import android.util.Log;
> import android.view.View;
> import android.widget.Button;
> public class MicTest extends Activity {
> private final static String TAG = MicTest.class.getSimpleName();
> private MediaRecorder recorder;
> private Button button;
> @Override
> public void onCreate(Bundle savedInstanceState) {
> super.onCreate(savedInstanceState);
> setContentView(R.layout.main);
> recorder = new MediaRecorder();
> button = (Button)findViewById(R.id.button);
> button.setText("start");
> button.setOnClickListener(new View.OnClickListener() {
> @Override
> public void onClick(View v) {
> buttonClicked();
> }
> });
> }
> private void buttonClicked() {
> if (button.getText().equals("start")) {
> try {
> recorder = new MediaRecorder();
> String path = "/sdcard/test.3gpp";
> recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
> recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
> recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
> recorder.setOutputFile(path);
> recorder.prepare();
> recorder.start();
> button.setText("stop");
> } catch (Exception e) {
> Log.w(TAG, e);
> }
> } else {
> try {
> recorder.stop();
> recorder.release(); // Now the object cannot be reused
> button.setEnabled(false);
> } catch (Exception e) {
> Log.w(TAG, e);
> }
> }
> }
> }