android模拟器可以播放音频吗?

时间:2013-08-09 08:42:12

标签: android audio android-emulator

我想录制并将录制的声音传递给手机的扬声器,但我无法使录制代码正常工作(应用程序崩溃,SEE MY ATTEMPT HERE)所以我现在正试图查看模拟器是否可以执行与音频有关的任何事情。我复制了1秒的录音,包括wav(16位pcm,44k采样频率,单声道)和mp3(通过Audacity完成录制和转换)到sdcard。我可以在IDE的文件浏览器中看到这些文件,所以我想模拟器正在正确检测到SD卡。但我无法让模拟器的内置音乐播放器来检测它们(为什么??)。

作为第二次尝试,我将代码HERE复制到示例hello world Android应用程序中。这是主要的活动类

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // String PATH_TO_FILE = "/sdcard/asMP3.mp3";
        // String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/asMP3.mp3";
        String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/wavSigned16bitPCM.wav";
        MediaPlayer mp1 = new MediaPlayer();
        try
        {

            mp1.setDataSource(PATH_TO_FILE);
            mp1.prepare();
            mp1.start();
            Toast.makeText(getApplicationContext(), "HERE", Toast.LENGTH_SHORT).show();
        }
        catch (IllegalArgumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IllegalStateException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}  

我认为这会在应用程序启动后立即开始播放声音。 Toast出现,所以我知道代码正在执行。程序没有崩溃,但也没有其他事情发生,在这种情况下也没有声音(为什么?)

作为第三次尝试,我使用了代码HERE,并在res\raw中添加了我想要播放的文件。这个程序也没有崩溃,但我仍然听不到任何声音。

所以问题是,是否有可能在模拟器上做任何与音频相关的事情?看THIS QUESTION它看起来应该是可能的,那么为什么不在我的程序中发生呢?我是否需要为音频输出设置任何权限?

----编辑----

我还看到THIS,但如果我使用-useaudio选项,模拟器只是说-useaudio是一个未知选项,emulator -help没有列出它,母鸡它清楚地显示为开发人员网站中的一个选项,而且它表示默认情况下启用了useaudio。那么为什么我的模拟器不能播放任何声音呢?

---更新---
如果使用快照启动了模拟器,则音频功能似乎不起作用。如果没有,音频功能仍然可能或可能不起作用,具体取决于计算机。请参阅HERE

1 个答案:

答案 0 :(得分:2)

是的,您可以在模拟器上进行与音频相关的工作。

您的代码序列应为 -

mp1 = new MediaPlayer();
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp1.setDataSource(PATH_TO_FILE);
mp1.prepare();
mp1.start();

用于在清单文件中设置权限。

使用这些作为记录功能 -

这些用于播放功能 -

官方Android开发者网站上有一篇指南文章

Guide to audio captureGuide to media playback

如果它不起作用,那么发布你的日志猫截图。