从应用程序调用MediapPlayer Invoke方法

时间:2013-04-02 07:10:43

标签: android android-mediaplayer android-source

我正在尝试为Aosp Mediaplayer实现额外的功能(如awesomeplayer中的setspeed)。

我在AOSP代码中看到mediaplayer.java中有一个名为Invoke的API public void invoke(Parcel request, Parcel reply)并遍历AwesomePlayer.cpp文件status_t AwesomePlayer::invoke(const Parcel &request, Parcel *reply)

我想在应用程序中使用这个Invoke方法来调用AwesomePlayer的调用API,并从那里调用我的setspeed方法,这样我就不需要修改android.jar文件了。

但是,我无法从应用程序中使用此调用API。 我在http://developer.android.com/reference/android/media/MediaPlayer.html

中没有看到关于调用API的任何词语

有人可以帮助我在应用程序中使用这个调用API。

1 个答案:

答案 0 :(得分:0)

隐藏invoke方法,这就是您无法以正常方式访问它的原因。你可以通过反思来获得它。即像这样的东西:

Class mediaPlayerClass = Class.forName("android.media.MediaPlayer");
Method mediaPlayerInvoke = mediaPlayerClass.getMethod("invoke", new Class[]{Parcel.class, Parcel.class});
mediaPlayerInvoke.invoke(parcel1, parcel2);

请注意,不推荐这种做法,因为隐藏的方法可能会发生变化或删除,如果您依赖它们,可能会导致应用中断。