カメラのプレビューと組み合わせて、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 でアプリをテストしています。
誰が私が間違っているのか教えてもらえますか?