首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放扬声器android的声音

播放扬声器android的声音
EN

Stack Overflow用户
提问于 2014-03-11 20:36:34
回答 1查看 5.8K关注 0票数 0

我使用这段代码尝试:

代码语言:javascript
复制
AudioManager audioManager = (AudioManager)getApplication().getSystemService(Context.AUDIO_SERVICE); 
        audioManager.setMode(AudioManager.MODE_IN_CALL);
        audioManager.setSpeakerphoneOn(true);

然后:

代码语言:javascript
复制
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse("url.mp3"));
                        r.play();

但我的应用程序不会复制任何声音。

我该如何解决我的问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 21:14:11

根据OP,可以使用MediaPlayer找到最好的答案(这个答案的注释部分给出了一个例子链接)。

-以前的编辑--

还没有测试这一点,所以请原谅我,如果它是错误,但我认为它可能会更好地设置为铃声的默认值,然后调用这个默认值。我还没有机会对代码进行测试,但看起来应该是……

要将音频传送到耳机:

代码语言:javascript
复制
private AudioManager audioManager;  
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);  
audioManager.setMode(AudioManager.MODE_IN_CALL); 
audioManager.setSpeakerphoneOn(false);

然后查看AudioTracks,它可能是您想要做的事情,因为铃声的默认操作基于Android的本地处理;应该是这样的

代码语言:javascript
复制
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调用,您可能需要检查并查看它们是如何替换它的。

再次,没有时间来测试这个,只是在飞行中输入它。如果你发现错误请告诉我。

我原来的“铃声”风格输出:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22336096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档