2013-07-07 2 views
0

Я сделал приложение, которое имеет 4 вкладки:Как играть видео через FragmentTabHost в Android

  1. вкладку Vedio, на этой вкладке, я хочу играть видео, принимая удаленный URL
  2. виртуальная лаборатория
  3. редактировать видео
  4. помощи

Я сделал класс MainActivity, в котором использует FragmentTabHost идентификатор класса для вкладки отображения.

public class MainActivity extends FragmentActivity{ 
    private FragmentTabHost mTabHost; 
    private FragmentTabHost mTabHostabove; 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 
     setContentView(R.layout.activity_main); 

     mTabHost = (FragmentTabHost)findViewById(R.id.tabhost); 
     mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent); 

     mTabHost.addTab(mTabHost.newTabSpec("Vedio").setIndicator("Vedio",getResources().getDrawable(R.drawable.ic_launcher)),FragmentTab.class,null); 
     mTabHost.addTab(mTabHost.newTabSpec("Virtual Lab").setIndicator("Virtual Lab"),FragmentTab.class,null); 
     mTabHost.addTab(mTabHost.newTabSpec("Edit Vedio").setIndicator("Edit Vedio"),FragmentTab.class,null); 

     mTabHost.addTab(mTabHost.newTabSpec("Help").setIndicator("Help1"),FragmentTab.class,null); 
     mTabHostabove = (FragmentTabHost)findViewById(R.id.tabhostabove); 
     mTabHostabove.setup(this, getSupportFragmentManager(), R.id.tabcontent); 

     mTabHostabove.addTab(mTabHostabove.newTabSpec("Logo").setIndicator("Logo"),FragmentTab.class,null); 
     mTabHostabove.addTab(mTabHostabove.newTabSpec("Vedio Url ").setIndicator("Vedio Url",getResources().getDrawable(R.drawable.ic_launcher)),FragmentTab.class,null); 
    } 
} 

Я также сделал класс FragmentTab, который расширяет фрагмент.

здесь код:

public class FragmentTab extends Fragment { 
    private TextView tv; 
    private VideoView mVideoView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
       View v = inflater.inflate(R.layout.fragment_layout, container, false); 
       tv = (TextView) v.findViewById(R.id.text); 
       mVideoView = (VideoView)v.findViewById(R.id.vedioview); 
       tv.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        try { 
         String path1="http://commonsware.com/misc/test2.3gp"; 
         MediaController mc = new MediaController(getActivity()); 
         mc.setAnchorView(mVideoView); 
         mc.setMediaPlayer(mVideoView); 
         mVideoView.setMediaController(mc); 
         mVideoView.requestFocus(); 
         // mVideoView.setVideoURI(Uri.parse("android.resource://" +getActivity().getApplicationContext().getPackageName() +"/"+R.raw.song)); 
         mVideoView.setVideoURI(Uri.parse(path1)); 
         mc.show(); 
         mVideoView.start(); 
        } catch (Exception e) { 
        } 
       } 
      }); 
      String tag = this.getTag(); 

      if (tag == "Vedio") { 
       tv.setText("play vedio"); 
      } 
      if (tag == "Edit Vedio") { 
       tv.setText("want to Edit Vedio !!!!!!!"); 
      } 
      if (tag == "Help") { 
       tv.setText("do u want help !!!!!!!"); 
      } 

      if (tag == "Virtual Lab") { 
       tv.setText("Enter Virtual lab !!!!!!!"); 
      } 

      return v; 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 
     } 
    } 

Я застрял играть Vedio на вкладке нажмите Vedio кто-нибудь решить эту проблему, если и может. Я искал 3 дня, но я не нашел решения. Vedio звук идет, но vedio не играет.

ответ

0

Не все устройства поддерживают все видеокодеки.

У меня была та же проблема: я работаю с mp4-форматом и разрешением 1280x720. Этот формат видео не поддерживался всеми устройствами (например, HTC Wildfire S). После изменения разрешения на 480x360 видео было показано всеми устройствами.

Эта ссылка должна помочь вам: http://developer.android.com/guide/appendix/media-formats.html

Смежные вопросы