Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Try looking at the <a href="http://www.netmite.com/android/mydroid/frameworks/base/media/java/android/media/AudioManager.java" rel="noreferrer">AudioManager source code</a>:</p> <pre><code>public void setMicrophoneMute(boolean on){ IAudioService service = getService(); try { service.setMicrophoneMute(on); } catch (RemoteException e) { Log.e(TAG, "Dead object in setMicrophoneMute", e); } } </code></pre> <p>The task of muting the microphone is delegated to a service named <a href="http://www.netmite.com/android/mydroid/frameworks/base/media/java/android/media/AudioService.java" rel="noreferrer">IAudioService</a>:</p> <pre><code>public void setMicrophoneMute(boolean on) { if (!checkAudioSettingsPermission("setMicrophoneMute()")) { return; } synchronized (mSettingsLock) { if (on != mMicMute) { AudioSystem.muteMicrophone(on); mMicMute = on; } } } </code></pre> <p>Which, in turn, delegates it to <a href="http://www.netmite.com/android/mydroid/cupcake/frameworks/base/media/java/android/media/AudioSystem.java" rel="noreferrer">AudioSystem</a> which seems to be implemented in <a href="http://www.netmite.com/android/mydroid/frameworks/base/media/libmedia/AudioSystem.cpp" rel="noreferrer">native code</a>:</p> <pre><code>status_t AudioSystem::muteMicrophone(bool state) { const sp&lt;IAudioFlinger&gt;&amp; af = AudioSystem::get_audio_flinger(); if (af == 0) return PERMISSION_DENIED; return af-&gt;setMicMute(state); } </code></pre> <p>Which, in turn, delegates it to <a href="http://androidaudio.blogspot.com/2010/06/so-what-is-audioflinger.html" rel="noreferrer">IAudioFlinger</a> as can be found in <a href="http://www.netmite.com/android/mydroid/frameworks/base/media/libmedia/IAudioFlinger.cpp" rel="noreferrer">IAudioFlinger.cpp</a>:</p> <pre><code>virtual status_t setMicMute(bool state) { Parcel data, reply; data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); data.writeInt32(state); remote()-&gt;transact(SET_MIC_MUTE, data, &amp;reply); return reply.readInt32(); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload