我想限制平板电脑在特定的屏幕方向上启动,如风景?我在这里谈论的是整个平板电脑而不是特定的应用程序,并且我确定在启动后没有关闭平板电脑中的自动旋转,我'我正在考虑限制平板电脑在风景区开展。
答案 0 :(得分:0)
import android.provider.Settings;
public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled)
{
Settings.System.putInt( context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0);
}
//adding permission
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
答案 1 :(得分:0)
创建文件orientationLock.xml
并将其放入其中 - res/values/orientationLock.xml
(名称无关紧要) -
<bool name="orien_lock">true</bool>
现在在res中创建一个名为values-sw600dp
和values-xlarge
的文件夹(如果您还没有)并将其放入其中 -
<bool name="orien_lock">false</bool>
然后,在您的活动的onCreate方法中输入:
锁定纵向模式
if(getResources().getBoolean(R.bool.orien_lock)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
锁定横向模式
if(getResources().getBoolean(R.bool.orien_lock)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
<强>解释强>
在宽度超过600dp(迷你制表符)或x-large(在Android 3.2之前版本)的设备上,orien_lock的值将变为false(由我们定义)为values-sw600dp
中的文件将被调用,它将被锁定在横向/纵向模式。
答案 2 :(得分:0)
对于平板电脑中的每项活动,您都可以在清单文件中使用此活动 我正在做类似的工作,它很容易。
<activity
android:name="com.example.abc.MainActivity"
android:label=""
android:screenOrientation="landscape"
android:windowSoftInputMode="adjustResize|adjustPan" >
</activity>
答案 3 :(得分:0)
找到答案,一个应用程序,只运行一次。
创建一个应用并向其添加权限,以显示 write_settings &amp; listen-to-boot :
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后创建一个receiver
类扩展 BroadcastReceivertype
,并使用以下权限:
<receiver android:enabled="true" android:exported="true"
android:name="com.example.BootCompletedReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
然后在onReceive()
类的receiver
方法中:
ContentResolver contentResolver = context.getContentResolver();
//To handle device rotation
Settings.System.putInt(contentResolver, Settings.System.ACCELEROMETER_ROTATION, 0);
Settings.System.putInt(contentResolver, Settings.System.USER_ROTATION, Surface.ROTATION_90); // 0 for default, then 90, 180, 270
然后运行此应用只需一次即可将该权限写入系统,然后您再也不需要它了。