Ich versuche, einen Sound aus dem Assets-Ordner abzuspielen, wenn ein Benutzer auf ein Tag im WebView meiner Anwendung klickt. Ich fand, dass ich eine neue Klasse erweitern WebViewClient können Sie die Erweiterung einer Verbindung erkennen und, wenn es sich um eine MP3-Datei ist, kann er es über die Standard-Audio-Player spielen. Aber ich möchte, dass es innerhalb der Aktivität spielt, ohne eine neue Aktivität zu starten.
Ich habe die folgenden Links als Referenzen verwendet: Ton in Webview und Fehler beim Erstellen des Mediaplayer mit Uri oder Datei in Vermögenswerten
Aber es hat nicht funktioniert.
Ich habe versucht, die folgenden Codes zu verwenden:
%Vor%Ich bekomme einen undefinierten Methodenfehler auf dem getAssets (), ich habe es versucht, googlen und es sagt etwas über die Weitergabe eines Kontexts aus. Ich bin sehr neu für Android und objektorientiertes Programmieren, so frage ich mich, ob dies der richtige Weg, es zu tun, und wenn es eine einfache Erklärung ist, auf das, was ein Kontext ist. Danke.
Unten sind meine vollständigen Codes:
MainActivity.class
%Vor%BEARBEITEN
So die Codes funktioniert dank Ссылка aber jetzt ein anderes Problem auftritt, ich die MyWebViewClient in das folgende Update:
%Vor%Aber ich bekomme eine java.io.FileNotFoundException, der Pfad scheint jedoch richtig. Ich habe ein Vermögen von 2 MP3-Dateien setzen / Webseiten / Sounds / 1.mp3 und Vermögen / Webseiten / 1.mp3 und verwendete den folgenden HTML-Codes zu testen:
%Vor%Aber ich bekomme den folgenden Fehler auf LogCat:
%Vor%Ist etwas falsch mit der Art, wie ich die Datei angerufen habe? Danke schonmal.
Gelöst
Danke an squonks Vorschläge, ich habe die folgenden Codes ausprobiert, damit es funktioniert und es hat gut funktioniert, danke Squonk!
%Vor%Und das html, um es zu testen:
%Vor%Ich habe zwar einen Fehler erhalten, wenn ich wiederholt darauf klicke, aber das ist eine andere Frage: D Wie schließt man seine Frage? & gt;. & lt;
Wenn Sie Ihre MediaPLayer
in MyWebViewClient
deklarieren, fügen Sie Folgendes hinzu:
Fügen Sie dann einen Konstruktor zu MyWebViewClient
wie folgt hinzu ...
Dann in shouldOverrideUrlLoading(...)
bekomme dein Vermögen wie folgt ...
Setzen Sie in Ihrer MainActivity
WebViewClient
, indem Sie this
(was die Aktivität Context
ist) wie folgt übergeben ...
Sie sollten auch false
von shouldOverrideUrlLoading(...)
zurückgeben, wenn die URL mit '.mp3' endet - dies zeigt an, dass Ihre WebView
Dinge verarbeitet und die 'Host'-Anwendung keine Instanz des Webbrowsers starten sollte.
BEARBEITEN: Um Audiodateien aus dem Verzeichnis "Assets" abzuspielen, müssen Sie die Datenquelle anders einstellen - siehe die akzeptierte Antwort auf play-audio-file-from-the-assets-Verzeichnis .
Sie sollten auch mp.prepare()
aufrufen, bevor Sie mp.start()
aufrufen.
Tags und Links android webview audio android-assets