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

Diskutiere Wie erhalte ich Zugriff auf das Microfon? (Android Studio) im Mobile Geräte Forum; 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....

  1. eniddelemaj
    eniddelemaj Neues 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 (Text):
    MediaRecorder.AudioSource
    gefunden, in der die Konstante
    Code (Text):
    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.
     
  2. Vielleicht helfen dir diese Grundlagen hier weiter: (hier klicken)
  3. sascha-sphw
    sascha-sphw Mitglied
  4. eniddelemaj
    eniddelemaj Neues 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 (Text):
    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 (Text):
    mRecorder.start()
    oder
    Code (Text):
    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 (Text):
    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 (Text):
    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.
     
  5. eniddelemaj
    eniddelemaj Neues 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?
     
  6. sascha-sphw
    sascha-sphw Mitglied
  7. eniddelemaj
    eniddelemaj Neues Mitglied
    Ah das hört sich vielversprechend an!
    Danke! Ich werde schreiben sobald ich Ergebnisse habe:)
     
  8. eniddelemaj
    eniddelemaj Neues Mitglied
    Okay ich habe jetzt folgenden Code geschrieben:
    Code (Text):
     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?
     
  9. eniddelemaj
    eniddelemaj Neues Mitglied
    Code (Text):
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS, android.permission.RECORD_AUDIO" />
     
    ... habe ich auch ins manifest geschrieben
     
  10. sascha-sphw
    sascha-sphw Mitglied
  11. truesoul
    truesoul Aktives Mitglied
    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
     
  12. Hast du dir unsere Java-Grundlagen hier schon gesichert? *Klick*
Die Seite wird geladen...

Wie erhalte ich Zugriff auf das Microfon? (Android Studio) - Ähnliche Themen

Zugriff auf Attribut einer unbekannten Klasse erhalten
Zugriff auf Attribut einer unbekannten Klasse erhalten im Forum Java Basics - Anfänger-Themen
Applet-Zugriffsrechte: merkwürdiges Verhalten
Applet-Zugriffsrechte: merkwürdiges Verhalten im Forum Allgemeine Java-Themen
ASCII Zeichen /char von KeyEvent erhalten
ASCII Zeichen /char von KeyEvent erhalten im Forum AWT, Swing, JavaFX & SWT
kryptisches Verhalten bei GridLayout
kryptisches Verhalten bei GridLayout im Forum AWT, Swing, JavaFX & SWT
Value erhalten
Value erhalten im Forum Application Tier
Thema: Wie erhalte ich Zugriff auf das Microfon? (Android Studio)