2014-09-06 9 views
-1

내 활동 방향을 가로 방향으로 설정하고 하나의 사례를 제외하고 그 상태를 유지합니다. 또한 사례가 화면 잠금입니다. 내 활동이 실행 중이고 화면이 잠겨있을 때 방향이 바뀝니다. 약간의 시간 동안 초상화에 가로로 돌아가서 내 앱을 다시 시작하게하고 싶지 않은데. 어떤 해결책은 ...?화면 잠금 상태에서 내 활동 방향이 바뀝니다

package com.example.hello; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import android.app.Activity; 
import android.app.KeyguardManager; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.content.SharedPreferences; 
import android.media.MediaPlayer; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.PowerManager; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.MediaController; 
import android.widget.Spinner; 
import android.widget.Toast; 
import android.widget.VideoView; 
public class MainActivity extends Activity{ 

    VideoView vv; 
    public ArrayList<String> list = new ArrayList<String>(); 
    int n,positio = 0; 
    String file = null; 
    Spinner spin; 
    MediaPlayer mp; 
    Intent intent; 
    File fl; 
    boolean isPlaying = true; 
    boolean screenOn = false; 
    PowerManager pm; 
    @Override 
    public void onCreate(Bundle savedInstance){ 

     super.onCreate(savedInstance); 
     Log.d("zaid iqbal", "in onCreate"); 
     requestFullScreen(); 
     setContentView(R.layout.activity_main); 
     vv = (VideoView)findViewById(R.id.video); 
     spin = (Spinner)findViewById(R.id.spinner); 
     MediaController mc = new MediaController(this); 
     pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     vv.setMediaController(mc); 
     setupSpin(); 


    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
      //Log.d("zaid iqbal", "in onPause"); 
     isPlaying = vv.isPlaying(); 
     screenOn = pm.isScreenOn(); 

     if (screenOn && isPlaying) { 
      // Screen is still on, so do your thing here 
      n++; 
      positio = vv.getCurrentPosition(); 
      vv.pause(); 
      //Toast.makeText(this, file, Toast.LENGTH_LONG).show(); 
      intent = new Intent(this,playBack.class); 
      intent.putExtra("file", file); 
      intent.putExtra("position", positio); 
      intent.putExtra("n", n); 
      startService(intent); 
     } 

     if(!isPlaying){ 

      positio = vv.getCurrentPosition(); 

     } 
    super.onPause(); 
} 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     //Log.d("zaid iqbal", "in onResume"); 
     if(!isPlaying){ 

      vv.setVideoPath(file); 
      vv.seekTo(positio); 


     }else{ 

     async aa = new async(); 
     aa.execute(); 

     } 
     super.onResume(); 
} 

    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 

    } 

    public void requestFullScreen(){ 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN 
       ,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    } 
    public void setupSpin(){ 

     File root = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Video/"); 
     listFiles(root); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list); 
     spin.setAdapter(adapter); 

     spin.setOnItemSelectedListener(new OnItemSelectedListener(){ 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int position, long id) { 
       // TODO Auto-generated method stub 
       //Log.d("zaid iqbal","in onclick of spin"); 
       if(n == 0){ 
       file = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Video/" + list.get(position); 
       Log.d("zaid", file); 
       //Toast.makeText(MainActivity.this, "original" + file, Toast.LENGTH_SHORT).show(); 
       vv.setVideoPath(file); 
       vv.start(); 
       } 
       //n = 0; 
       /*File fl = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Video/","settings.txt"); 
       try { 
        BufferedReader reader = new BufferedReader(new FileReader(fl)); 
        file = reader.readLine(); 
        position = Integer.parseInt(reader.readLine()); 
        reader.close(); 

        BufferedWriter writer = new BufferedWriter(new FileWriter(fl)); 
        writer.write(file); 
        writer.write(position); 
        writer.write(n); 
        position = Integer.parseInt(reader.readLine()); 
       } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       }*/ 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 

     }); 

    } 

    public void listFiles(File f){ 
     try{ 
     File[] files = f.listFiles(); 
     for(File file : files){ 

      if(file.isFile()){ 

       String filenameArray[] = file.toString().split("\\."); 
       String extension = filenameArray[filenameArray.length-1]; 
       //if(extension == "mp4" || extension == "3gp") 
       list.add(file.getName()); 

      } 

     } 
     }catch(Exception e){ 

      e.printStackTrace(); 

     } 

    } 

    class async extends AsyncTask<String,Long,Long>{ 

     @Override 
     protected Long doInBackground(String... params) { 
      // TODO Auto-generated method stub 
      if(intent != null){ 
       stopService(intent); 
      //Reading file 

      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Long result) { 
      // TODO Auto-generated method stub 
      fl = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Video/","settings.txt"); 
      try { 
       //Log.d("zaid iqbal", "getted file"); 
       BufferedReader reader = new BufferedReader(new FileReader(fl)); 
       file = reader.readLine(); 
       //Toast.makeText(MainActivity.this, "getted file" + file, Toast.LENGTH_SHORT).show(); 
       positio = Integer.parseInt(reader.readLine()); 
       n = Integer.parseInt(reader.readLine()); 
       reader.close(); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      if(n != 0){ 

      n=0; 
      try { 
       BufferedWriter writer = new BufferedWriter(new FileWriter(fl)); 
       writer.write(file + "\n" + positio + "\n" + n); 
       writer.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      vv.setVideoPath(file); 
      vv.seekTo(positio); 
      vv.start(); 
     } 
      super.onPostExecute(result); 
    } 
} 

} 
+0

당신의 코드를 게시,보고 – Ameer

+0

편집 해 내 게시물 - http://developer.android.com/training/basics/activity-lifecycle/index.html은 –

+0

안드로이드 액티비티 라이프 사이클 .Take –

답변

0

Manifest 파일의 당신의 Activity 태그이 시도 :

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name">  

여기 오리엔테이션을 의미합니다. 사용자가 직접 처리하려는 구성 변경.

활동이 구성 변경을 처리한다고 선언하려면 처리 할 구성을 나타내는 값과 함께 android:configChanges 특성을 포함하도록 매니페스트 파일에서 적절한 <activity> 요소를 편집하십시오.

활동의 이전 상태를 복원하려면 onSaveInstanceState()onRestoreInstanceState()을 사용하십시오.

Refer this also

+0

아무것도 –

0

당신은 너무 방향이 강제로 당신 활동에 setRequestedOrientation() 전화를 시도 할 수 있습니다.

+0

예를 바랍니다 일어나지 않았다? –

+0

http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation%28int%29 그러나 이것이 가로에서 세로로 변경되는 것을 피할지라도 애플리케이션 라이프 사이클 관리는 당신은 상태를 복원합니다. –