0

Flex Mobile アプリで Android SDK を使用して、Java で記述されたアクティビティを表示する必要があります。Map ANE を使用して実行したことはありますが、サンプル コードやそのようなものは見つかりません。ANE が機能するために必要な Java および ActionScript コードを既に作成しました (アクティビティが作成され、Java と AS3 を真に橋渡しするために必要なすべてのクラス、イベント、およびメソッドがそこにあります)。それをステージに。DisplayList に追加できないことはわかっており、ステージ オブジェクトであっても問題ありません。

まったく役立つ場合は、MediaPlayer を使用してビデオを表示しようとしています (AS3/Flex を使用した場合の MP4 ストリーミングの問題のため)。

Michael の場合 (2012 年 8 月 27 日 @ 午前 9 時 44 分 MST):

08-27 09:27:07.836: I/CS VideoInit(2567): context is set
08-27 09:27:07.836: I/CS VideoInit(2567): intent is instantiated 
08-27 09:27:07.836: I/ActivityManager(349): START {cmp=air.AndroidANETesting2/xi.video.android.extension.VideoActivity u=0} from pid 2567

私のアクティビティの最初の行は

Log.i("CS VideoActivity","Made it inside the activity somehow");

これが私のJavaの外観です。これは初期化関数です:

VideoInit.context = context;
Log.i("CS VideoInit","context is set");
Intent intent = new Intent( context.getActivity(), VideoActivity.class );
Log.i("CS VideoInit","intent is instantiated");
context.getActivity().startActivity( intent );
Log.i("CS VideoInit","Activity is started");
context.dispatchStatusEventAsync("PLAY", "PLAY");

そして、ここに私の VideoActivity onCreate() があります:

super.onCreate(savedInstanceState);
Log.i("CS VideoActivity","Made it inside the activity somehow");

そして、適切な測定のための私のマニフェスト(アプリケーションセクションのみ):

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".VideoActivity"
        android:label="@string/title_activity_video" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

更新 (2012 年 8 月 27 日 @ 午前 10 時 52 分 MST) さらなる調査 (または試行錯誤、呼び方は自由) の後、startActivity() 行を try{}catch(Throwable e) にスローして確認することにしました。もしあれば、それがスローしていたエラー。興味深いことに、それはこれを投げました。

08-27 10:49:41.406: I/CS VideoInit(7786): Unable to find explicit activity class {air.AndroidANETesting2.debug/xi.video.android.extension.VideoActivity}; have you declared this activity in your AndroidManifest.xml?

Android マニフェスト ファイルを再確認する必要があるようです。

4

1 に答える 1

5

それは実際には非常に簡単です。

android.app.Activity を実装する ANE でクラスを作成する必要があります。次に、FREFunction から、FREContext のベース Activity インスタンスの startActivity 関数を使用するだけです。

したがって、関数で、インテントを使用してアクティビティを開始できます。

public class ExampleFunction implements FREFunction 
{
    @Override
    public FREObject call( FREContext context, FREObject[] passedArgs ) 
    {
        Intent intent = new Intent( context.getActivity(), ExampleActivity.class );
        context.getActivity().startActivity( intent );
    }
}

次に、実際のアクティビティの実装で:

public class ExampleActivity extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        // Do your stuff here, like create views, buttons etc
    }
}

このアクティビティは、アプリケーションの上に表示されます。必要に応じて、FREContext への静的参照を使用して、イベントやデータをアプリケーションに戻すことができます。

また、マニフェスト アプリケーション タグ内の -app.xml にアクティビティを追加する必要があります。

<application> <activity android:name="package.ExampleActivity"></activity></application>
于 2012-08-23T00:41:38.323 に答える