화면 자동 회전 On/Off
화면 자동 회전 기능을 소스상에서 제어하자.
AndroidManifest 파일을 설정하자.
<uses-permission
android:name="android.permission.WRITE_SETTINGS" />
사용자에게
android.permission.WRITE_SETTINGS 권한을 요청한다.
public class MainActivity extends AppCompatActivity {
private final int ACTION_MANAGE_WRITE_PERMISSION_REQUEST_CODE = 100;
.................
public void checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(this)) { // 권한이 없으면
// 시스템 설정으로 이동하여 권한 획득 요청
Uri uri = Uri.fromParts("package" , getPackageName(), null);
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, uri);
startActivityForResult(intent, ACTION_MANAGE_WRITE_PERMISSION_REQUEST_CODE);
} else {
// do next
}
} else {
// do next
}
}
@TargetApi(Build.VERSION_CODES.M)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACTION_MANAGE_WRITE_PERMISSION_REQUEST_CODE) {
if (!Settings.System.canWrite(this)) {
// error toast : 사용자 권한 획득 실패
} else {
// do next : 정상적으로 권한 획득 완료.
}
}
}
.................
화면 자동 회전 설정값을 가져와 현재 상태를 확인한다.
public boolean getRotationScreen() {
int result = 0;
try {
result = Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION);
// result = 1 -> 화면 자동회전이 활성화된 상태
// result = 0 -> 화면 자동회전이 비활성화된 상태
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return result == 1;
}
화면 자동 회전 활성화/비활성화 하자.
public void setRotation(boolean brotation) { // brotation = true 면 활성화, false 면 비활성화
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, brotation? 1:0);
}
'프로그램개발' 카테고리의 다른 글
[Android] 다른 앱 위에 그리기 (With Service, Overlay View) (8) | 2020.03.26 |
---|---|
[Android] RSS 뉴스, XML 파싱하기 (7) | 2020.03.18 |
[Android] Android Studio에서 기기 화면 캡쳐하기 (0) | 2020.03.17 |
[Android] ListView 새로고침/갱신하기 (with BaseAdapter) (0) | 2020.02.17 |