Désactiver et activer les changements d'orientation dans une activité dans Android par programmation

J'ai une Appli qui font un peu de fond de personnel. Lorsque le travail de fond est en cours d'exécution un Cercle de progression est affichée, si l'appareil est mis en rotation pendant ce temps, alors que l'Activité est "reset" et je veux éviter que.

Pour cette raison que j'ai décidé de désactiver l'orientation au cours de ce processus. J'ai vu des differends fils, pour cette question, mais aucun avec une solution valide, au moins dans mon cas.

Les solutions sont affichées sur la réparation de l'activité de l'orientation, mais vous avez à traiter avec le fait que l'INVERSE orientations ne sont pas retournés si vous utilisez:

getResources().getConfiguration().orientation

La fonction ci-dessus renvoie SCREEN_ORIENTATION_PORTRAIT à la fois pour le PORTRAIT et REVERSE_PORTRAIT cas (au moins dans mes tests).

Donc à la fin j'ai utilisé la valeur de Rotation pour faire face à cela, donc mon code "désactiver la rotation" est:

int rotation = getWindowManager().getDefaultDisplay().getRotation();

    switch(rotation) {
    case Surface.ROTATION_180:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        break;
    case Surface.ROTATION_270:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);         
        break;
    case  Surface.ROTATION_0:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        break;
    case Surface.ROTATION_90:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        break;
    }

Et de permettre à nouveau l'orientation:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

Qui fonctionne parfaitement dans un appareil avec Android 4.1.2, mais dans un Appareil avec Android 4.2.1 il ne fonctionne pas comme prévu.

Je suppose que la gestion de la rotation de l'activité en direct cycle doit être une question commune mais je n'ai pas été en mesure de trouver une solution adaptée. Peut-être que je suis à la recherche pour le mauvais sens, donc toute aide est vraiment la bienvenue.

Merci d'avance,
Ivan.

C'est effectivement ce que vous voulez: Appel Screen.lockOrientation(this) à partir de github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/...

OriginalL'auteur Ivan BASART | 2013-11-16