Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

リフレクションを使ったlistenerの実装方法について

よろしくお願いいたします。

android 4.0以上でSDK公開されていないAPIを使わなければ実装できない機能があり、リフレクションを駆使したプログラムの実現性を試しております。
その際、
import android.filterpacks.videosrc.SurfaceTextureSource.SurfaceTextureSourceListener;(非公開)
をリスナーとして別クラスに渡す必要があり、
----------------------------------
private SurfaceTextureSourceListener mSourceReadyCallback = new SurfaceTextureSourceListener() {
    public void onSurfaceTextureSourceReady(Object source) {
    
    }
};
----------------------------------
と同等の記述をリフレクションを使って書かなければなりません。どなたかこの記述方法をご存じないでしょうか?
よろしくお願い申し上げます。

ちなみに、
    public GraphEnvironment() {
        try {
            Class c = Class.forName("android.filterfw.GraphEnvironment");
            instance = c.newInstance();
        } catch (Exception e) {
            
        }
    }
といったインスタンス生成でのリフレクションについては何となく理解しておりますし、
android 4.0実機での動作も確認しております。

SDKで公開されれば、こんなややこしいことをする必要はないのですが、プログラミング以外の事情がありまして、どうしても非公開クラスを使う必要がございます。

どなたかお知恵を拝借できれば幸いですが、、。

3

回答

5551

閲覧

3件の回答

評価

0

自己解決いたしました。
海外フォーラムに同じ質問があり、回答がありました。stackoverflowに答えがあります。

http://stackoverflow.com/questions/1082850/java-reflection-create-an-implementing-class

http://www.java2s.com/Code/Java/Reflection/CreatingaProxyObject.htm

評価

0

公開されていないが存在するAPIを利用?

リフレクションをつかって無理やりする必要なし

開発時はモックで開発するほうがいいでしょ。

どうせSDKでは動かせないんだから。

評価

0

解決済みのようなので蛇足ですが参考までに。

> SDKにエクスポートされないメソッド

http://wiki.android-fun.jp/?SDK%E3%81%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89

何かしら意味があって@hideが付与されているので、
極力は避けたいところですがAndroid開発ではままあることです。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。