본문 바로가기

프로그램개발

[Android] 화면 자동 회전 On/Off

화면 자동 회전 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);
}

 

댓글