2011-01-14 8 views
3

Ich bin kurz vor der Fertigstellung eines Projekts Ich arbeite an der Verwendung von Android, aber lief in eine kleine Beule auf der Straße, als wir ein neues Gerät zum Testen unserer Anwendung mit.Auswählen von Audiodateien mit Intent.createChooser funktioniert nicht mit allen Telefonen

ich verwende Programmierung Android 1.6 und meine beiden Geräte sind:

HTC Incredible - Verizon (Android 2.2)
Samsung Galaxy S - T-Mobile (Android 2.1 Update 1)

Ein Teil die Anwendung ermöglicht es dem Benutzer eine aufgezeichnete Audiodatei auszuwählen mit:

// 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); 

Und rufen onActivityResult nachdem die Auswahl getroffen wird.

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

Dies funktioniert auf dem Gerät fein I auf (HTC Incredible - Verizon) meine ursprüngliche Anwendung programmiert.

Wenn Sie jedoch das Samsung Galaxy S (T-Mobile) verwenden, wird der erste Auswahldialog geöffnet (Music Player | Voice Recorder), aber von dort funktioniert wirklich nichts.

Wenn ich den Music Player wähle, werden keine meiner Aufnahmen aufgelistet (auf dem HTC kann ich meine Aufnahmen oder Musiktitel auswählen, die mit meinem Telefon geliefert wurden).

Wenn ich Voice Recorder wähle, kehrt es zu meiner onActivityResult-Methode mit dem Ergebniscode RESULT_CANCELED zurück und zeigt eine Toast-Meldung an, die besagt, dass das Limit der Nachrichtendatei erreicht wurde.

Kann mir jemand einen Einblick geben? Jede Hilfe wird sehr geschätzt!

Danke!

Antwort

2

Das Galaxy S Audio-Subsystem ist in 2.1 bekannt. Zum Beispiel funktioniert Skype auf diesen Geräten nicht. Ich habe festgestellt, dass 2.2 viele Probleme behebt.

Eine Sache, mit der Sie experimentieren können, ist das Aufrufen von AudioManager.setMode() zu MODE_IN_CALL vor der Aufnahme. Sie können sich auch einen Quellcode ansehen, um zu sehen, ob sie dieses spezielle Problem gelöst haben (siehe zum Beispiel Ringdroid).

Es gibt viele Informationen darüber, wie das Galaxy S Audio laut Spezifikation nicht funktioniert (for instance the speakerphone routing is very broken).

Viel Glück!

+0

Danke, ich hielt nach, ob es andere Kommentare gibt, aber ich werde dies als beantwortet markieren. Ich kann nicht für das Leben von mir die Firmware auf meinem Galaxy S aktualisieren, sehen, dass Sie Kies dazu verwenden müssen, und ich möchte das Telefon in keiner Weise jailbreak. Die Kies-Software (2.0) scheint das Telefon nicht zu unterstützen ... – tribe84

+0

wie man den Modus auf AudioManager einstellt – sheetal

Verwandte Themen