Android videoview control is not displaying video, only audio is played

前端 未结 2 1134
花落未央
花落未央 2021-01-15 19:12

I am trying to play a video from a url in android, for this I am using videoview control in the fragment class, but while playing there is no video output only audio output

相关标签:
2条回答
  • 2021-01-15 19:16

    add only one line

    vv.setZOrderOnTop(true);
    
    0 讨论(0)
  • 2021-01-15 19:20

    Here try my code I suggest you for the following Code wherein I am running my application successfully

    The Code is as Follows:

    XML file:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#f0f0f0" >
    
        <Button
            android:id="@+id/btnVideoGallery"
            android:layout_width="75dp"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="15dp"
            android:text="@string/gallery" />
    
        <Button
            android:id="@+id/btnCancel"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/btnVideoGallery"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="22dp"
            android:text="@string/cancel" />
    
        <TextView
            android:id="@+id/lblDisplayImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/btnCancel"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dp"
            android:text="@string/below_this_text_video_will_be_displayed"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#000000"
            android:textSize="13dp" />
    
        <VideoView
            android:id="@+id/vvDisplayVideo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/lblDisplayImage"
            android:layout_marginTop="15dp" />
    
    </RelativeLayout>
    

    Java File:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.MediaController;
    import android.widget.VideoView;
    
    public class VideoActivity extends Activity {
    
        private Button btnVideoGallery,btnCancel;
        private VideoView vvDisplayVideo;
        /** The Constant PICK_VIDEO. */
        private static final int PICK_VIDEO=1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_video_options);
    
            btnVideoGallery=(Button)findViewById(R.id.btnVideoGallery);
            vvDisplayVideo=(VideoView)findViewById(R.id.vvDisplayVideo);
            btnCancel=(Button)findViewById(R.id.btnCancel);
            vvDisplayVideo.setVisibility(View.GONE);
    
            btnVideoGallery.setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
    
                    Intent video=new Intent();
                    video.setAction(Intent.ACTION_PICK);
                    video.setType("video/*");
                    startActivityForResult(video, PICK_VIDEO);
    
                }
            });
    
            btnCancel.setOnClickListener(new OnClickListener() {
    
                public void onClick(View v) {
    
                    Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class);
                    goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(goStartUp);
                    finish();
                }
            });
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            if (resultCode==Activity.RESULT_OK && requestCode == PICK_VIDEO) {
    
                vvDisplayVideo.setVisibility(View.VISIBLE);
                vvDisplayVideo.setVideoURI(data.getData());
                vvDisplayVideo.setFocusable(true);
                MediaController mc=new MediaController(this);
                vvDisplayVideo.setMediaController(mc);
                Log.i("True", "Executed");
            }
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
    
            Intent goStartUp=new Intent(VideoActivity.this, StartUpActivity.class);
            goStartUp.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(goStartUp);
            finish();
            return super.onKeyDown(keyCode, event);
        }
    }
    

    Also you can modify the Manifest File as per your use:

    <manifest ...>
        <uses-sdk .../>
        <uses-permission android:name="android.permission.CAMERA" />
            <uses-permission android:name="android.permission.RECORD_VIDEO" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
            <uses-feature
                android:name="android.hardware.camera"
                android:required="false" />
    
        <application ...>
        </application>
    
    </manifest>
    
    0 讨论(0)
提交回复
热议问题