我即将完成一个我正在使用 Android 进行的项目,但是当我们有一台新设备来测试我们的应用程序时遇到了一些小问题。
我正在使用 Android 1.6 编程,我的两台设备是:
HTC Incredible - 威瑞森 (Android 2.2)
Samsung 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)。
但是,当使用 Samsung Galaxy S (T-Mobile) 时,第一个选择对话框打开(音乐播放器 | 录音机),但从那里没有任何效果。
如果我选择音乐播放器,则不会列出我的任何录音(在 HTC 上,我可以选择我的录音或手机附带的音乐轨道)。
如果我选择录音机,它会返回到我的 onActivityResult 方法,结果代码为 RESULT_CANCELED 并显示提示消息“已达到消息文件限制”。
任何人都可以对此提供一些见解吗?任何帮助将不胜感激!
谢谢!
最佳答案
Galaxy S 音频子系统在 2.1 中出了名的损坏。例如,Skype 不能在这些设备上运行。我发现 2.2 修复了很多问题。
您可以尝试的一件事是调用 AudioManager.setMode()录制前到 MODE_IN_CALL。此外,您还可以查看一些开源代码,看看它们是否解决了这个特定问题(例如参见 Ringdroid)。
有很多关于 Galaxy S 音频如何不按照规范工作的信息 (for instance the speakerphone routing is very broken)。
祝你好运!
关于android - 使用 Intent.createChooser 选择音频文件不适用于所有手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693331/