Android 如何将活动设置为全屏?
在我的应用程序中,我有一个布局,必须结合相机和地图,并且是全屏的。 当我将设备保持在横向模式时,它可以正常工作,但当我将其切换到纵向模式时,图像会变成这样。我怎样才能解决这个问题? 这是我的舱单Android 如何将活动设置为全屏?,android,camera,android-manifest,Android,Camera,Android Manifest,在我的应用程序中,我有一个布局,必须结合相机和地图,并且是全屏的。 当我将设备保持在横向模式时,它可以正常工作,但当我将其切换到纵向模式时,图像会变成这样。我怎样才能解决这个问题? 这是我的舱单 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mainserver.mapcam
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mainserver.mapcam" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.CAMERA" />
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MainActivity"
android:label="@string/title_activity_maps"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
一旦设备方向改变,您需要更新相机旋转 要接收设备方向更改回调,请将其添加到清单文件中的活动标记中:
android:configChanges="orientation|screenSize"
然后将此代码添加到您的活动中:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
updateCameraRotation();
}
public void updateCameraRotation() {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(0, info);
int rotation = getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break;
case Surface.ROTATION_90: degrees = 90; break;
case Surface.ROTATION_180: degrees = 180; break;
case Surface.ROTATION_270: degrees = 270; break;
}
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360;
}
mCamera.setDisplayOrientation(result);
}
请注意,mCamera是一个类字段,在调用
Camera.open()时首先设置
它可以工作,但是在设备第一次旋转后,当应用程序刚刚打开时,我如何才能第一次修复它?@Carmine callupdatecamerarotion()
就在Camera.open()
之后。