protected MediaPlayer _mediaPlayer;
protected void playFromResource(int resId)
{
if (_mediaPlayer != null)
{
_mediaPlayer.stop();
_mediaPlayer.release();
}
_mediaPlayer = MediaPlayer.create(this, resId);
_mediaPlayer.start();
}
Run Code Online (Sandbox Code Playgroud)
此代码用于在模拟器和设备上正常工作.从一段时间以来(我认为自从我更新到ADT r10以来)它只适用于设备.在仿真器上不再有声音,应用程序在通过时会冻结on _mediaPlayer.release()(第二次调用该函数).我能够从通过更换崩溃保持应用程序stop(),并release()通过reset(),但它并没有解决的主要问题:有在模拟器上没有声音.
日志文件在调用之后显示了一堆这些(仅在模拟器上) start()
03-09 19:14:30.716:WARN/AudioTrack(34):obtainBuffer超时(CPU是否挂起?)0x1afb8 user = 00001e00,server = 00000600
任何线索????
我在这里读到可以在android模拟器中使用麦克风,所以我决定尝试一下(尽管这个问题的答案说不可能)
我复制/粘贴了ANDROID DEVELOPERS WEBSITE中提供的代码并添加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud)
也是清单.界面显示,有两个命令按钮,一个用于开始录制,一个用于播放录制.按下它后,开始录制按钮上的文本将更改为停止录制,但如果按下停止录制按钮,应用程序将挂起然后崩溃(Unfortunately, Mic Rec Test has stopped.).然后logcat发出此消息
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error reading audio input
E/AudioFlinger( 40): Error …Run Code Online (Sandbox Code Playgroud) 我想录制并将录制的声音传递给手机的扬声器,但我无法让录音代码正常工作(应用程序崩溃,请在此处查看我的尝试)所以我现在正在尝试查看模拟器是否可以执行与音频相关的任何操作或不.我复制了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 …Run Code Online (Sandbox Code Playgroud)