2014-10-07 32 views
3

我需要檢測設備的方向,因爲我已經在下面編寫了一個代碼。但我無法得到orientation.This是我在MainActivity ... 的OnCreate(),如果我需要改變什麼,請讓我提前知道在Android中使用OrientationEventListener無法獲取方向

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    mOrientationListener = new OrientationEventListener(getApplicationContext()) 
    { 
     @Override 
     public void onOrientationChanged(int orientation) 
     { 
      if(orientation == 0) 
      { 
       setContentView(R.layout.activity_main_portrait); 
      } 
      else 
      { 
       setContentView(R.layout.activity_main_landscape); 
      } 
     } 
    }; 
    if (mOrientationListener.canDetectOrientation()) 
    {   
     mOrientationListener.enable(); 
    } 

    mImgPreview = (ImageView) findViewById(R.id.imgpreview); 
    mVideoPreview = (ImageView) findViewById(R.id.videopreview); 
    mAudioPreview = (ImageView) findViewById(R.id.audiopreview); 

    /*-------Intent to view Image Gallery---------*/ 
    mImgPreview.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(getApplicationContext(), ImageList.class); 
      startActivity(intent); 
     } 
    }); 

    /*-------Intent to view Video Gallery---------*/ 
    mVideoPreview.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(getApplicationContext(), Video.class); 
      startActivity(intent); 
     } 
    }); 

    /*--------Intent to view Audio Gallery--------*/ 
    mAudioPreview.setOnClickListener(new OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      Intent intent = new Intent(getApplicationContext(), AudioPlayer.class); 
      startActivity(intent); 
     } 
    }); 
} 

//感謝

+0

有你啓用了它? – 2014-10-07 12:10:00

+0

沒有如何獲得它 – 2014-10-07 12:10:58

回答

5

您需要啓用聽衆使其工作。

OrientationEventListener mOrientationListener = new OrientationEventListener(
       getApplicationContext()) { 
    @Override 
    public void onOrientationChanged(int orientation) { 
     if (orientation == 1) { 
      Toast.makeText(getApplicationContext(), "portrait", 
          Toast.LENGTH_LONG).show(); 
     } else { 
      Toast.makeText(getApplicationContext(), "landscape", 
          Toast.LENGTH_LONG).show(); 
     } 
    } 
}; 

if (mOrientationListener.canDetectOrientation()) {   
    mOrientationListener.enable(); 
} 

這對我來說工作得很好。

希望它有幫助。

+0

我已經定義了我的肖像和風景佈局裏面如果條件...當我運行應用程序它顯示應用程序已經停止..... – 2014-10-07 12:20:01

+0

@NarendraKumar看到logcat。有一個崩潰 – 2014-10-07 12:20:22

+0

當我運行應用程序它不會檢查方向。改變設備方向後,只有orientationeventlistener會執行...我不是沒有問題的地方 – 2014-10-07 12:24:20

-1

使用這個....

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Configuration config = getResources().getConfiguration(); 

    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      // setContentView 1 here 
    }else{ 
      // setContentView 2 here 
    } 

}

寫這段代碼怎麼把活動的的onCreate()函數的方向變化時起開始其週期..

+0

首先,這不是問題。他想用傳感器(OrientationEventListener)來做。其次,你的代碼不是標準的;您不應該手動檢查佈局方向,這就是/ res/layout和/ res/layout-land的目的。 – afollestad 2015-07-21 01:38:36

相關問題