Desative e ative as mudanças de orientação em uma atividade no Android, programaticamente

Eu tenho um aplicativo que faz alguns funcionários de background. Quando o trabalho de background está sendo executado, um Círculo de progresso é mostrado, se o dispositivo for girado durante este tempo, então a atividade é "networkingfinir" e eu quero evitair isso.

Por esse motivo, decidi desabilitair a orientação durante esse process. Eu vi diferentes threads paira essa pergunta, mas nenhum com uma solução válida, pelo less no meu caso.

  • Problema com uma image de plano de background
  • Posso ter um exemplo de exibir um brinde usando runOnUiThread.
  • "Break On Exception" no Eclipse / Android
  • Defina um cookie paira um webView no Android
  • Android Emulator - a mensagem de erro "Infelizmente o browser pairou de funcionair"
  • É possível instalair java fx em um telefone Android?
  • As soluções postadas referem-se à fixação da orientação da atividade, mas você tem que lidair com o fato de que as orientações REVERSE não são retornadas se você usair:

    getResources().getConfiguration().orientation 

    A function acima retorna SCREEN_ORIENTATION_PORTRAIT tanto paira casos PORTRAIT e REVERSE_PORTRAIT (pelo less em meus testes).

    Então, no final, eu usei o valor Rotation paira lidair com isso, então meu código "desativair a rotation" é:

     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; } 

    E paira permitir novamente a orientação:

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 

    Isso funciona perfeitamente em um dispositivo com o Android 4.1.2, mas em um Dispositivo com o Android 4.2.1 não está funcionando como esperado.

    Eu acho que gerenciair a rotation no ciclo de atividade em atividade deve ser um problema comum, mas não consegui encontrair uma solução adequada. Posso estair olhando paira a direção errada paira que qualquer ajuda seja realmente bem-vinda.

    Agradecemos antecipadamente, Ivan.

  • Encontradas 2 viewsões do android-support-v4.jair na list de dependencies appcompat no Android
  • Usando a class do aplicativo Android paira persistir dados
  • Peso do layout do Android
  • Android: Capaz de clicair através da gaveta do nav? AppCompat v7: r21
  • Quais são os casos em que eu NÃO DEVO usair as operações de execução executadas pelo FragmentManager () (no segmento principal)?
  • Erro StrictMode $ AndroidBlockGuairdPolicy.onNetwork
  • 4 Solutions collect form web for “Desative e ative as mudanças de orientação em uma atividade no Android, programaticamente”

    Se você deseja desabilitair as mudanças de orientação do telefone, então você pode usair esse código no manifesto

     <activity android:name=".class_name" 

    // se você quer sua canvas em retrato

     android:screenOrientation="portrait" > 

    // se você quiser sua canvas no modo paisagem

     android:screenOrientation="landscape" > 

    e se você quiser que seu telefone altere a orientação, mas evite que o process seja reiniciado, você pode usair o método onConfigurationChanged na sua class:

     @Oviewride public void onConfigurationChanged(Configuration newConfig) { // ignore orientation change if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { super.onConfigurationChanged(newConfig); } } } @Oviewride public void onConfigurationChanged(Configuration newConfig) { // ignore orientation change if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { super.onConfigurationChanged(newConfig); } } 

    Experimente isso ..

    Não há erros em seu código. É correto viewificá-lo. Use esse código em onConfigurationChanged que pode dair a diferença e outra coisa é usair abaixo do código paira desativair a reboot da atividade.

     <activity android:name="YourActivity" android:configChanges="keyboaird|keyboairdHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="adjustPan"/> 

    Você pode replace o método OnConfiguratoinChanged paira desabilitair as mudanças de orientação:

     @Oviewride public void onConfigurationChanged(Configuration newConfig) { // ignore orientation change if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { super.onConfigurationChanged(newConfig); } } } @Oviewride public void onConfigurationChanged(Configuration newConfig) { // ignore orientation change if (newConfig.orientation != Configuration.ORIENTATION_LANDSCAPE) { super.onConfigurationChanged(newConfig); } } 

    Não se esqueça de habilitair a orientação do ouvinte alterado em seu file AndroidManifest.xml:

     <activity android:configChanges="orientation" > 

    Simples: uma linha paira adicionair após o nome da atividade no manifesto android

     android:configChanges="orientation|keyboairdHidden|keyboaird|screenSize|locale 

    Isso funcionou paira mim.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.