我使用这段代码尝试:
AudioManager audioManager = (AudioManager)getApplication().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(true);然后:
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse("url.mp3"));
r.play();但我的应用程序不会复制任何声音。
我该如何解决我的问题?
发布于 2014-03-11 21:14:11
根据OP,可以使用MediaPlayer找到最好的答案(这个答案的注释部分给出了一个例子链接)。
-以前的编辑--
还没有测试这一点,所以请原谅我,如果它是错误,但我认为它可能会更好地设置为铃声的默认值,然后调用这个默认值。我还没有机会对代码进行测试,但看起来应该是……
要将音频传送到耳机:
private AudioManager audioManager;
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(false);然后查看AudioTracks,它可能是您想要做的事情,因为铃声的默认操作基于Android的本地处理;应该是这样的
InputStream in =getResources().openRawResource("user_mp3");
AudioTrack audio = new AudioTrack(AudioManager.STREAM_MUSIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, buffersize, AudioTrack.MODE_STREAM);
byte[] sound = null;
sound = new byte[in.available()];
sound =convertStreamToByteArray(in);
in.close();
audio.write(sound, 0, sound.length());
audio.play();但是,当您完成AudioManager时,一定要将您的模式重新设置为正常模式。我觉得这个应该管用。还有不推荐的AudioManager.ROUTE_EARPIECE调用,您可能需要检查并查看它们是如何替换它的。
再次,没有时间来测试这个,只是在飞行中输入它。如果你发现错误请告诉我。
我原来的“铃声”风格输出:
Uri soundPath = Uri.parse("uri_link_for_mp3");
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),
RingtoneManager.TYPE_RINGTONE, soundPath);
Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), ringtone);
r.play();不得不把这个打得有点快,可能漏掉了什么东西,只是没有想到而已。不过,有一个很好的链接:Setting Ringtone in Android
https://stackoverflow.com/questions/22336096
复制相似问题