4

音を録音してみました。Intent を使用して音声を録音します。しかし、あるデバイスでは MediaStore.Audio.Media.RECORD_SOUND_ACTION がエラーを返します:

これは私のコードです:

Intent intent = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivityForResult(intent, RQS_RECORDING);

これは私のエラーです:

No activity found to handle Intent { act=android.provider.MediaStore.RECORD_SOUND (has extras) }

理由は何ですか?一部のデバイスでは機能にアクセスできないということですか? RECORD_SOUND_ACTION がデバイスに存在するかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

3

そのデバイスには、オーディオを録音できるアプリケーションがない可能性があります。最初に、デフォルトのオーディオ レコーダーがあるかどうかを確認します。

別の投稿 ( Samsung Charge RECORD_SOUND_ACTION Intent not return when started for result ) によると、他のデバイスでも発生する可能性があり、バグである可能性があります。

これは、アプリケーションにRECORD_SOUND_ACTIONインテントのレシーバーが含まれておらず、指定されたインテントを処理するアクティビティがマニフェストで宣言されていない場合、デバイスにデフォルトのオーディオ レコーダーがある場合でも可能です。

このインテントを処理するには、独自のオーディオ レコーダーを実装し、マニフェストで次のように宣言します (念のため):

<activity
    android:name="com.test.AudioRecorder"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.provider.MediaStore.RECORD_SOUND" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

編集:アクティビティがインテントを受け取ることができるかどうかを確認する方法の例を追加する

Android ドキュメントから

if (sendIntent.resolveActivity(packageManager) != null) {
    startActivity(sendIntent)
}
于 2013-03-21T11:24:55.497 に答える