android - 使用 Intent.createChooser 选择音频文件不适用于所有手机

标签 android

我即将完成一个我正在使用 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/

相关文章:

android - 为什么android :clickable ="false" work for Spinner?没有

android - 运行时是否需要互联网权限请求(Android)?

android - dart:从 firebase 数据库快照中获取类似 "%text%"的 SQL 搜索

java - 在 Android 中使用 Restful WCF 服务

java - 如何从 Activity 中监听洛蒂动画结束

java - android.R.layout.simple_spinner_dropdown_item 和 android.R.layout.simple_spinner_item 的区别

Android 自定义适配器 getView() NullPointerException 不知从何而来!

安卓方向

android - 如何使用 contentResolver 在 android 中编写查询以仅从图库获取特定日期的图像?

android - onLocationChanged 从未调用过?