2012-10-29 12 views
12

platformy: rozwija się w Eclipse przy użyciu Android SDK 16.Android VideoView nie gra orientacji pionowej

PROBLEM: Mam element VideoView który ma wypełnić cały ekran w 480x800 (portret ORIENTACJA) i gra dobrze, ale nie będzie orientować się na portret. Wstawia się w trybie poziomym, a współczynnik kształtu jest przekrzywiony, aby pasował do tego.

co mam PRÓBA:

  • pomocą ANDROID screenOrientation = "portret" w oczywisty
  • pomocą ANDROID orientacji = "pionowego", w pojemniku, a VideoView sam
  • pomocą setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); tuż przed nazywam setContentView
  • próbuje ustawić szerokość układu i wysokość 480dpx800dp zamiast fill_parent
  • próbuje ustawić szerokość VideoView i wysokość do 480px x 800dp zamiast fill_parent
  • przełączania wyłączenie automatycznego obracania wyświetlacza

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="480dp" 
    android:layout_height="800dp" 
    android:background="#000000" 
    android:orientation="vertical" > 

    <VideoView 
     android:id="@+id/opening_video" 
     android:layout_width="480dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:layout_height="800dp" 
     android:orientation="vertical" /> 

    <ImageButton 
     android:id="@+id/imageButton1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/transparent_button" 
     android:contentDescription="@string/back_button_desc" 
     android:background="@android:color/transparent" /> 

</RelativeLayout> 

kodu:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     setContentView(R.layout.activity_start_screen); 

     VideoView videoView = (VideoView) findViewById(R.id.opening_video); 

     Uri pathToVideo = Uri.parse("android.resource://com.example.consumerengage/" + R.raw.opening_tablet); 
     videoView.setVideoURI(pathToVideo); 
     videoView.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       mp.setLooping(true); 
      } 
     });   

     videoView.requestFocus(); 
     videoView.start(); 

     // boolean isPlaying = videoView.isPlaying() ; 

     // videoView.stopPlayback(); 
     // videoView.clearFocus(); 

     addListenerOnButton(); 

    } 

na pytanie: Nic nie próbowałem odniosła sukces. Jak mogę odtwarzać wideo o wymiarach 480 x 800 w orientacji pionowej?

Odpowiedz

0

Oto, co skończyło się robi:

Kwestia była wersja OS. Gdyby był to ICS (4.0) i nowszy, odtwarzałby wideo po swojej stronie, więc po wykryciu android.os.Build.VERSION.SDK_INT o wartości 14 lub większej, ładuję wideo, które jest zbudowane na jego boku, więc odtwarza właściwa droga.

To bardzo głupie rozwiązanie i nigdy tak naprawdę nie znalazłem odpowiedzi na moje pytanie. Film nie powinien być odtwarzany w ten sposób.

0

Spróbuj:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000"> 

    <VideoView 
     android:id="@+id/opening_video" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <ImageButton 
     android:id="@+id/imageButton1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/transparent_button" 
     android:contentDescription="@string/back_button_desc" 
     android:background="@android:color/transparent" /> 

</RelativeLayout> 

nadzieję, że to pomaga. Sprawdź także plik manifestu.

+0

Po zmianie XML na powyższe ustawienia wideo nadal odtwarzane jest w poziomie, a nie w pionie. –

+0

@RickS Błąd, który popełniasz, określa stałą wysokość i szerokość układu i obrazu wideo. Po prostu użyj domyślnego rodzica zapałek i po prostu napisz android: screenOrientation = "portrait" w działaniu pliku manifestu. –

+0

Usunąć Android: screenOrientation z Twojej aktywności w pliku manifeast – AMD

2

Czy jesteś pewien, że Twoje wideo ma rozdzielczość 480 x 800, a nie 800 x 480? 800x480 to standardowa rozdzielczość, jeśli nagrywasz wideo w orientacji pionowej z telefonem, wyjście będzie nadal mieć rozdzielczość 800x480 i aby normalne odtwarzanie wideo powinno być obrócone o 90 stopni. Opisujesz, co by się stało, gdybyś spróbował odtwarzać wideo o rozdzielczości 800 x 480 w wideoView o wymiarach 480 x 800. W takim przypadku można obracać go za pomocą oprogramowania do edycji wideo, takiego jak Windows Live Moviemaker lub iMovie, jeśli używasz komputera Mac.

+0

+1, spójrz na to. –

+0

W rzeczywistości wycinamy wideo za pomocą profesjonalnego oprogramowania do edycji Final Cut Pro w kilku różnych rozdzielczościach, kodekach i orientacjach. Dziwne było to, że gra dobrze na jednej tabletce, ale na innej jest dziwne. –

+0

@Rick S Jakie tabletki działały i co zrobiło –

1

Używasz dp gdzie należy używać px:

<VideoView 
    android:id="@+id/opening_video" 
    android:layout_width="480px" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:layout_height="800px" 
    android:orientation="vertical" /> 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/transparent_button" 
    android:contentDescription="@string/back_button_desc" 
    android:background="@android:color/transparent" /> 

Lub alternatywnie (i lepiej) - wystarczy użyć match_parent (lub fill_parent):

<VideoView 
    android:id="@+id/opening_video" 
    android:layout_width="match_parent" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:layout_height="match_parent" 
    android:orientation="vertical" /> 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/transparent_button" 
    android:contentDescription="@string/back_button_desc" 
    android:background="@android:color/transparent" /> 

Powiązane problemy