安卓模拟器可以播放音频吗

Posted

技术标签:

【中文标题】安卓模拟器可以播放音频吗【英文标题】:can the android emulator play audio 【发布时间】:2013-08-09 08:42:12 【问题描述】:

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

作为第二次尝试,我将代码 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】:

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

你的代码序列应该是 -

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

以及在清单文件中设置权限。

使用这些记录功能-

还有这些用于播放功能 -

官方android开发者网站上有一篇指导文章

Guide to audio capture 和 Guide to media playback

如果它不起作用,请发布您的日志猫屏幕截图。

【讨论】:

请注意,developer.android.com/guide/topics/media/audio-capture.html 声明“Android Emulator 无法捕获音频,但实际设备可能提供这些功能。” 是的,模拟器本身没有捕获音频的能力,但如果主机 PC 安装了麦克风,那么它可能会捕获音频。注意:I didn't tried this but we can give it a try.

以上是关于安卓模拟器可以播放音频吗的主要内容,如果未能解决你的问题,请参考以下文章

我们可以从安卓模拟器拍照吗?

用电脑运行安卓模拟器,他的IP和电脑相同吗

用电脑运行安卓模拟器,他的IP和电脑相同吗

用电脑运行安卓模拟器,他的IP和电脑相同吗?

我可以将安卓模拟器连接到我的网络吗?

双机位考试手机如何使用虚拟摄像头