当前位置: 首页 > 知识库问答 >
问题:

Android模拟器可以播放音频吗

薛栋
2023-03-14

我想录制并将录制的声音传递给手机的扬声器,但我无法使录制代码正常工作(应用程序崩溃,请参见我的尝试),因此我现在正在尝试查看模拟器是否可以执行与音频相关的任何操作。我用wav(16位pcm,44k采样频率,单声道)和mp3(通过Audacity进行录制和转换)将1秒录制复制到SD卡。我可以在IDE的文件资源管理器中看到这些文件,所以我猜模拟器正在正确检测SD卡。但我无法让模拟器的内置音乐播放器检测到它们(为什么??)。

作为第二次尝试,我将这里的代码复制到示例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,因此我知道代码正在执行。程序不会崩溃,但也不会发生任何其他情况,在这种情况下也没有声音(为什么?)

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

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

----编辑----

我也看到了这个,但是如果我使用-usedio选项,模拟器只是说-usedio是一个未知选项,并且模拟器-help没有列出它,当它在开发人员网站中清楚地显示为一个选项时,而且它还说默认启用usedio。那么为什么我的模拟器没有播放任何声音呢?

---更新---
如果模拟器已使用快照启动,音频功能似乎不起作用。如果不是,音频功能仍然可能工作,也可能不工作,具体取决于计算机。请参阅此处

共有1个答案

松雅健
2023-03-14

是的,您可以在emulator上执行与音频相关的工作。

您的代码序列应该是-

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

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

将这些用于记录功能-

这些是播放功能-

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

音频捕获指南和媒体播放指南

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

 类似资料:
  • 概述 音频播放模块兼容全系列makeblock主控板,内置语音解码芯片,可以播放音乐及录音。本模块接口是白色色标,说明是I2C信号控制,需要连接到主板上带有白色标识接口。插入TF内存卡即可感受音乐的快乐,使用起来非常方便。 技术规格 工作电压:5V DC 麦克风灵敏度(1Khz):50-54dB 麦克风阻抗:2.2 kΩ 麦克风信噪比:58 db 喇叭额定功率:1W 喇叭额定阻抗:8±15%Ω 通

  • 大家好,我正在尝试使用两个独立的媒体播放器实例播放音频和视频文件。当我从一开始播放它时,它工作得很好。但当我寻找时,我可以看到音频和视频的延迟 这是我寻找音频和视频的代码 //sikAudio(msec); if(media播放器!=null) { // 没有直播流,如果(medialayer.get持续时间() }

  • 我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?

  • 我有listview,它包含一个带有播放按钮和搜索栏的音频文件列表。 当我单击listview的播放按钮时,我想播放一个音频文件。我成功地实现了这一点,但当我单击列表中的另一个播放按钮时,两个音频文件正在连续播放,它将继续所有单击播放按钮。我如何限制媒体播放器在一个位置播放,如果我点击另一个图标,它必须停止旧的媒体播放器,并开始播放新的。有人能说我怎么实现这个吗?。我有相同的按钮播放和暂停。

  • 一款带有圆形进度条的在线音频播放器。 [Code4App.com]

  • 我想使用android<code>MediaPlayer</code>将文件中的音频播放到手机的耳机(或已连接的耳机)中。我尝试使用本文中建议的MODE_IN_CALL hack-Android-通过耳机播放音频,但没有帮助。该应用程序还具有android.com权限。MODIFY_AUDIO_SETTINGS权限,但对<code>m_amAudioManager的任何调用。无线电话(假) 被忽略