使用Intent.createChooser选择音频文件不能与所有手机配合使用

时间:2011-01-14 16:29:00

标签: android

我即将完成我正在使用Android的项目,但是当我们得到一个新设备来测试我们的应用程序时,遇到了一点点。

我正在使用Android 1.6编程,我的两个设备是:

HTC Incredible - Verizon(Android 2.2)
三星Galaxy S - T-Mobile(Android 2.1更新1)

应用程序的一部分允许用户使用以下选择录制的音频文件:

// Select a recording
i = new Intent();           
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("audio/*");
startActivityForResult(Intent.createChooser(i, "Select audio file"), Enums.REQUEST_CODE_SELECT_ATTACHMENT);

在选择之后调用onActivityResult。

if (resultCode == RESULT_OK && Enums.REQUEST_CODE_SELECT_ATTACHMENT == requestCode)) 
{
    // do something here
}
else
{
    //ResultCode comes back as RESULT_CANCELED
}

这在我编写原始应用程序的设备上运行正常(HTC Incredible - Verizon)。

但是,使用三星Galaxy S(T-Mobile)时,会打开第一个选择对话框(音乐播放器|录音机),但从那里开始没有任何效果。

如果我选择音乐播放器,我的所有录音都没有列出(在HTC上,我可以选择手机附带的录音或音乐曲目)。

如果我选择录音机,它将返回我的onActivityResult方法,结果代码为RESULT_CANCELED,并显示一条“达到消息文件限制”的Toast消息。

任何人都可以对此有所了解吗?任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:2)

Galaxy S音频子系统在2.1中是众所周知的。例如,Skype无法在这些设备上运行。我发现2.2解决了很多问题。

您可以尝试的一件事是在录制前将AudioManager.setMode()调用到MODE_IN_CALL。此外,您可能会查看一些开源代码,看看他们是否已经解决了这个特定问题(例如参见Ringdroid)。

有很多关于Galaxy S音频如何根据那里的规范不起作用的信息(for instance the speakerphone routing is very broken)。

祝你好运!