3

カメラのプレビューと組み合わせて、Google Maps Android API v2 の MapFragment を使用しようとしています。カメラ プレビューと MapFragment を切り替えられるようにする必要がありますが、うまくいきません。

カメラ プレビューについては、サンプル ガイドから CameraPreview クラスをコピーしました。カメラのプレビューを見たいときは、CameraPreview クラスのインスタンスをアクティビティに追加します。

CameraPreview mPreview = new CameraPreview(this); 
addContentView(mPreview, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

MapFragment を使用していないときは、これで問題なく動作します。

MapFragment については、次の方法でアクティビティのレイアウトに追加しました

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >


    <fragment
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</LinearLayout> 

CameraPreview がなくても問題なく動作します。以下を使用して MapFragment を非表示および再表示できます (非表示など)。

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(map_fragment);
ft.commit();

ただし、2 つを一緒に使用しようとすると問題が発生します。つまり、MapFragment を非表示にしてから、CameraPreview インスタンスをアクティビティに追加します。非表示は機能せず、MapFragment が何らかの形で CameraPreview をハイジャックして優先されるようです。奇妙な機能の 1 つは、画面を強制的にスリープ状態にしてから起動すると、起動時に CameraPreview が存在することです。逆に、つまり最初に CameraPreview を追加してから MapFragment を非表示にすると、動作は同じになります。

参考までに: Android バージョン 4.1.1 を実行している Samsung Galaxy Note 2 LTE でアプリをテストしています。

誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

0

この mPreview.setZOrderOnTop(true); のように、カメラ プレビューで setZOrderOnTop(boolean) を使用します。わたしにはできる。

于 2013-08-09T08:45:00.103 に答える