我正在尝试将 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();
但是,当我尝试将两者结合使用时,问题就出现了,即隐藏 MapFragment,然后将 CameraPreview 实例添加到我的活动中。隐藏不起作用,似乎 MapFragment 以某种方式劫持了 CameraPreview 并具有优先权。一个奇怪的功能是,如果我强制屏幕进入睡眠状态然后将其唤醒,当它唤醒时,CameraPreview 就在那里。如果我反过来做,即先添加CameraPreview,然后隐藏MapFragment,行为是一样的。
仅供参考:我正在运行 Android 版本 4.1.1 的三星 Galaxy Note 2 LTE 上测试该应用程序。
谁能告诉我我做错了什么?