2017-02-10 35 views
0

私は2つの別のAndroidアプリ(apk)を持っています。AIDL経由でSurfaceHolderを渡すには?

App1はSurfaceViewを作成し、SurfaceViewの場合はSurfaceHolderのインスタンスを取得するAIDLメソッドを提供する必要があります。したがって、他のアプリはそのビューを描画することができます。

Surfaceは、Parcelableインターフェイスを実装しているので、簡単にaidl経由で転送できました。

// IMainService.aidl 
package com.commonsware.cwac.preso.demo.service; 
import android.view.Surface; 

interface IMainService { 
    Surface getSurf(); 
} 

しかし、サードパーティのSDカードには、SurfaceHolderが必要です。だから質問は - 与えられたSurfaceインスタンスのためにSurfaceHolderを作成するにはどうすればいいですか、またはSurfaceHolderをAIDL経由で転送するにはどうすればいいですか? SurfaceHolderのParcelableを実装する方法の例はありますか?

私のユースケース(その問題の場合):アプリケーション1つの開始Serviceなどとプレゼンテーション画面上のUIを描きます。そして、アプリ1の中にNokia Here Mobile SDKを使って別のアプリにナビゲーションデータを表示させる方法が必要です。 apiを使用するにはSurfaceHolderが必要です。

ご協力いただければ幸いです。

+0

SurfaceHolderクラスを拡張しようとすると、実装parcelabaleに –

+0

おかげで、しかしSurfaceHolderはどのように我々はそれがparcelable作ることができるインターフェイスである...そう...?または与えられた表面からそれを作成する方法かもしれませんか? –

答えて

3

しばらくすると、ここでOffscreenRender APIとうまく機能するソリューションを作成します。私はSurfaceHolderを作成し、このアプリはAIDL(上記の記事で参照)を提供する1つのアプリで

。このAIDLを使えば、私はSurfaceオブジェクトを正しく送信してから、アプリケーション2側でSurfaceHolderを作成することができました。

基本的に、システムの代わりに私自身で初期化された自分自身のSurfaceHolder。このアプローチでは、Rectサイズを要求できるようにAIDLを拡張する必要があります。

希望は誰かに役立つだろう。

関連する問題