Wie erhalte ich Zugriff auf das Microfon? (Android Studio)

eniddelemaj

Mitglied
Ich versuche eine App zu programmieren, mit der man bei Bedarf das Microfon an- und auschalten kann. Bspweise möchte ich per Knopfdruck (z.B. lauter/leise Taste) das Mikrofon bei einem Anruf, an- und ausschalten können. Dazu brauche ich ja zunächst Zugriff auf das Mikrofon.

Ich habe bisher die Klasse
Code:
MediaRecorder.AudioSource
gefunden, in der die Konstante
Code:
MIC
zu finden ist.
Weiter bin ich leider nicht gekommen, da ich keine Möglichkeit fand über die Konstante oder deren Klasse, das Mic zu kontrollieren.
Gibt es da nicht eine Klasse/Funktion die dafür gemacht ist das Mic zu kontrollieren?

Ich würde mich Hilfe sehr freuen!
Danke für Eure Antworten.
 

eniddelemaj

Mitglied
Danke für deine Antwort!
Ich kannte die Seite. Ich habe erst gedacht, dass ich damit nur nichts anfangen kann, weil
es mir nicht darum geht, den Ton zu verarbeiten. Ich will lediglich das Mikrofon an- und ausschalten können und
das auch wenn ein Anruf läuft. Ich habe dann dennoch versucht einen Code zurecht zu basteln.

Ich habe jetzt eine App mit zwei Buttons. Der eine soll das Mic anschalten, der andere aus.
Ich habe die Klasse MediaRecorder benutzt und initialisiert:
Code:
MediaRecorder mRecorder;
mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.UNPROCESSED);
... mit Abfrage einder Zugriffsberechtigung..
... dann starte ich die Aufnahme im Clicklistener oder stoppe sie:
Code:
mRecorder.start()
oder
Code:
mRecorder.stop()
;

Ich rufe die Funktionen, die zur Verarbeitung nötig sind, nicht auf. Nach
meinem Verständnis brauche ich dies nicht. Also Funktionen wie:
Code:
mRecorder.setOutputFormat();
mRecorder.setOutputFile();
mRecorder.setAudioEncoder();
mRecorder.prepare();
...brauche ich dann nicht, weil sie der Verarbeitung dienen.

Ich erhalte beim starten in der Konsole eine Fehlermeldung:
Code:
I/MediaRecorderJNI: start
E/MediaRecorder: start called in an invalid state: 2
I/System.out: Fehler bei start() : java.lang.IllegalStateException
D/ViewRootImpl@ef5f00b[MainActivity]: ViewPostImeInputStage processPointer 0
D/ViewRootImpl@ef5f00b[MainActivity]: ViewPostImeInputStage processPointer 1
D/ViewRootImpl@ef5f00b[MainActivity]: ViewPostImeInputStage processPointer 0
D/ViewRootImpl@ef5f00b[MainActivity]: ViewPostImeInputStage processPointer 1

Die App stürzt zwar nicht ab. Aber wegen der Fehlermeldung bezweifle ich, dass
ich das Mic beeinflusse.
 

eniddelemaj

Mitglied
Okay ich habe es jetzt einfach so gemacht, wie es im Link stand. Also habe ich ein File
erstellt in dem das Aufgenommene gespeichert wird. (Ist für mein Ziel überflüssig) Es hat auch geklappt. Ich konnte
starten und stoppen.
Mein Ziel ist es allerdings das Mikrofon auch während eines laufenden Anrufs zu unterbrechen.
Dies hat allerdings nicht geklappt. Hat jemand dazu eine Lösung?
 

eniddelemaj

Mitglied
Okay ich habe jetzt folgenden Code geschrieben:
Code:
 aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        originalMode = aManager.getMode();

...

if(v.getId() == R.id.onButton)
        {
            System.out.println("Microphone unmuted");
            aManager.setMode(originalMode);
            aManager.setMicrophoneMute(false);
        }
        else
        {
            try {
                System.out.println("Microphone muted");
                aManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
                aManager.setMicrophoneMute(true);
            }
            catch(Exception e)
            {

                System.out.println("Error muting : "+e);
            }

        }

Es funktioniert nur leider nicht. Wenn ich einen Anruf durchführe und in
meiner App auf den off Button gehe (setMicrophonemute(true)) passiert leider nichts.
Irgendeine Lösung?
 

eniddelemaj

Mitglied
Code:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS, android.permission.RECORD_AUDIO" />

... habe ich auch ins manifest geschrieben
 

truesoul

Top Contributor
Hallo.

Wenn du es für dich selber brauchen solltest dann schaue dir einfach mal Tasker an.
Da musst du dich ein wenig damit beschäftigen aber da kannst du auf Events (Anruf) reagieren und die Aktion bestimmen (Aufnahme z. B).

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W onViewCreated blockiert Session Zugriff gegensatz zu onCreateView? Fragment Android & Cross-Platform Mobile Apps 25
R Android Zugriff auf view von MainActivity Android & Cross-Platform Mobile Apps 7
J Android Zugriff auf eine Datei, diese von einer anderen App erstellt wurde? Android & Cross-Platform Mobile Apps 11
M Zugriff auf Helligkeitsregler von Handy? Android & Cross-Platform Mobile Apps 17
C Zugriff auf die Position eines String- bzw Spinner-Arrays Android & Cross-Platform Mobile Apps 1
B Android Kein Zugriff auf Telefonspeicher (Android 6) Android & Cross-Platform Mobile Apps 1
N Zugriff auf TextView in ListItem via ButtonClick Android & Cross-Platform Mobile Apps 4
K Android Zugriff auf FTP-Server Android & Cross-Platform Mobile Apps 1
S Android Zugriff auf Bilder im Telefonspeicher + Galeriedarstellung Android & Cross-Platform Mobile Apps 5
N Android Zugriff auf PlayStore im Abgesicherten Modus verhindern Android & Cross-Platform Mobile Apps 2
L Zugriff auf entfernten mySQL-Server via Android Android & Cross-Platform Mobile Apps 4
T Android Reflection zugriff auf setFocusableInTouchMode Android & Cross-Platform Mobile Apps 5
L Android Zugriff aus unbound Service auf Preferences Android & Cross-Platform Mobile Apps 2
H Smartphone (Front-)Kamera-Zugriff per Website Android & Cross-Platform Mobile Apps 6
S Android Zugriff auf FTP Server Android & Cross-Platform Mobile Apps 7
S Android Zugriff auf Website fuers Infos Android & Cross-Platform Mobile Apps 2
C Java ME Kein Java Zugriff auf Samsung! Android & Cross-Platform Mobile Apps 5
R Java ME mit Zugriff auf Adressbuch / Kalender Android & Cross-Platform Mobile Apps 3
H FileConnection: Frage nach Dateisystem-Zugriff unterdrücken Android & Cross-Platform Mobile Apps 5
1 zugriff auf handy-microfon Android & Cross-Platform Mobile Apps 2
H Zugriff auf XML/DB oder aehnliches Android & Cross-Platform Mobile Apps 3
G Zugriff auf den gesamten Bildschirm bei PDAs Android & Cross-Platform Mobile Apps 8

Ähnliche Java Themen

Neue Themen


Oben