リンク先の図は明確ではありませんでしたが、青い MediaPlayer ボックスは MediaPlayer Java クラスを参照していると思います。
libmedia MediaPlayer はネイティブ クラスです。Java と C/C++ 間の呼び出しは Java Native Interface (JNI) を経由する必要があるため、android_media_MediaPlayer には MediaPlayer Java クラスと通信するために必要な JNI コードが含まれているため、Java クラスとネイティブ libmedia クラスの間の一種のプロキシとして機能します。 .
たとえば、MediaPlayer.java には次の宣言があります。
public native void prepareAsync() throws IllegalStateException;
android_media_MediaPlayer に JNINativeMethod としてリストされているもの:
{"prepareAsync", "()V", (void *)android_media_MediaPlayer_prepareAsync},
これは、Java が " prepareAsync
" として認識するメソッドが署名 " ()V
" (引数なし、戻り値void
) を持ち、ネイティブ関数 に対応していることを示していますandroid_media_MediaPlayer_prepareAsync
。
が呼び出されると、ネイティブ MediaPlayer のメソッドandroid_media_MediaPlayer_prepareAsync
が呼び出されます。prepareAsync