0

我正在尝试为 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。

4

1 回答 1

0

invoke方法是隐藏的,这就是您无法以正常方式访问它的原因。不过,您可能可以通过反思来解决。即是这样的:

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

请注意,不建议使用这种做事方式,因为隐藏的方法可能会更改或删除,如果您依赖它们,可能会使您的应用程序崩溃。

于 2013-04-02T08:04:50.853 回答