2017-06-18 20 views
-1

私はサービスを開始した場所からのアクティビティを持っています。このサービスは、ランドスケープモードでレイアウトを表示します。私の問題は、サービスがランドスケープモードで何かを表示し、アクティビティもランドスケープモードになる場合で、サービスレイアウトがポートレートモードになると、アクティビティレイアウトもポートレートモードになります。私は、サービスがランドスケープモードでいくつかのことをやっている間、ランドスケープモードに行かないようにしたいだけです。私はポートレートモードでアクティビティを保持したいだけです。私はマニフェストを試みましたが、運はありません。解決策はありますか?サービス中の方向変更

+0

は「サービスは風景モードでレイアウトを表示する」に行きます - あなたは、このような[MCVE]を介するなど、これによって何を意味するかを詳細に説明することを望むかもしれません。 – CommonsWare

答えて

0

サービスについて心配する必要はありません。

あなたが(一時的な)

<activity android:name=".YourActivity" 
android:configChanges="orientation" 
android:screenOrientation="landscape"/> // or portrait 

または条件の状況に をサービスを開始する場所をあなたの活動のためにこれを設定し、特定のその後の活動のマニフェストで

のための恒久的なビューを維持したい場合は、

を行うことができます
if(isServiceStarted){ 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

} 
if(isServiceEnded){ 
//flip to original view 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} 

私はそれがあなたのために働くことを望みます。

向きはオリエンテーション

onPause(); 
onSaveInstanceState(); 
onStop(); 
onDestroy(); 

onCreate(); 
onStart(); 
onResume(); 

の ライフサイクルを変更したときに表示

を回転させたいとき、今の2つの方法

void changeToLandscape(){ 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
} 
void changeToPro(){ 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} 

を作る起こる何更新アンス

その後、

それはonResume()

void onResume(){ 
    super(); 
    if(isServiceOn){ 
     changeToLandscape() 
    } 
    else{ 
    changeToPro() 
    } 
} 
void onPause(){ 
     super(); 
     if(isServiceOn){ 
      changeToLandscape() 
     } 
     else{ 
     changeToPro() 
     } 
    } 
+0

ハンドラh; 実行可能なr; public void orien(){ h =新しいハンドラ(); R =新しいRunnableを(){ @Override公共ボイドラン(){ IF(フルスクリーン){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)。 h.postDelayed(r、1); } else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); h.postDelayed(r、1); } } }; h.post(r); } –

+0

このハンドラで試しましたが、まだ投稿していません。返信用のおはよう –

+0

サービスがビューを横長に設定する瞬間、サービスはすぐにサービスが終了すると同時にlandscape.asに移動します。アクティビティは着陸する。ビュー・アクティビティとサービスの変更にbcoz onResume()メソッドで –

0

サービスにはlayoutまたはUIがありません。

Android doc

からのサービスの基礎を読むAサービスは、バックグラウンドで長時間実行 操作を実行できるアプリケーションコンポーネントであり、それはユーザー インタフェースを提供していません。別のアプリケーションコンポーネントはサービスを開始することができ、別のアプリケーション に切り替えても、 はバックグラウンドで実行を継続します。さらに、コンポーネントはサービス にバインドして相互作用したり、プロセス間通信(IPC)を実行することさえできます。 例えば、サービスはネットワークトランザクションを処理したり、音楽を再生したり、 のファイルI/Oを実行したり、コンテンツプロバイダと対話したりすることができます。あなたはおそらく2つの活動を持っているとのトンがある配向を制御する

SOのスレッドがすでに好き: - Android - disable landscape mode?
How do I disable orientation change on Android?

+0

はいあなたが適切なサービスですが、私は切り上げxml.soから膨張ビューを表示するには、ウィンドウマネージャを使用しています何のui.butを持っていない、私は活性を有し、service.iは肖像画が、WHNに活動の方向性を修正したいですサービスは、アクティビティビューも景観に行く使っ番目のマニフェストを通じてmode.triedランドスケープモードになり<活動のアンドロイド:名=アンドロイド:screenOrientationは= 『風景』 アンドロイド:「mainHome.mainHome。」configChanges = 『オリエンテーション|画面サイズ』>しかし運 –

+0

瞬間サービスは、アクティビティが、サービスは、それが戻ってportrait.the問題になる活動が土地に行く理由で閉じてすぐにlandscape.asに行く風景にビューを設定します。 –

0

をサービスは、バックグラウンド実行時間の長い操作で実行します。ユーザーインターフェイスはありません。

関連する問題