我正在尝试为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。
答案 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);
请注意,不推荐这种做法,因为隐藏的方法可能会发生变化或删除,如果您依赖它们,可能会导致应用中断。