android 系统播放器播放https,android:自己实现能播放网络视频url的播放器

android原生自带的播放器一般只能播放本地视频,而没有播放url的功能。不过android系统中有一个VideoView的控件可以实现这一功能。

简单实现如下:

public class MyVideoPlay extends Activity implements MediaPlayer.OnErrorListener,

MediaPlayer.OnCompletionListener {

public static final String TAG = "MyVideoPlay";

private VideoView mVideoView;

private Uri mUri;

private int mPositionWhenPaused = -1;

private MediaController mMediaController;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.video_view);

//Set the screen to landscape.

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

mVideoView = (VideoView)findViewById(R.id.my_video_view);

//Video file

Intent it = getIntent();

mUri = Uri.parse(it.getStringExtra("netUrl"));

//Create media controller

mMediaController = new MediaController(this);

mVideoView.setMediaController(mMediaController);

mVideoView.setOnCompletionListener(new OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

// TODO Auto-generated method stub

MyVideoPlay.this.finish();

}

});

}

public void onStart() {

// Play Video

if (mVideoView != null && mUri != null) {

mVideoView.setVideoURI(mUri);

mVideoView.start();

} else {

Toast.makeText(MyVideoPlay.this, "发生错误", Toast.LENGTH_SHORT).show();

}

super.onStart();

}

public void onPause() {

mPositionWhenPaused = mVideoView.getCurrentPosition();

mVideoView.stopPlayback();

super.onPause();

}

public void onResume() {

// Resume video player

if(mPositionWhenPaused >= 0) {

mVideoView.seekTo(mPositionWhenPaused);

mPositionWhenPaused = -1;

}

super.onResume();

}

public boolean onError(MediaPlayer player, int arg1, int arg2) {

return false;

}

public void onCompletion(MediaPlayer mp) {

MyVideoPlay.this.finish();

}

}

截图:

69e449e5a8230a522370ec5039cccaa5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Qt Android播放器的代码示例: ```cpp #include <QtAndroidExtras> #include <QtMultimedia> class AndroidPlayer : public QObject { Q_OBJECT public: AndroidPlayer(QObject *parent = nullptr) : QObject(parent) {} public slots: void play(const QUrl &url) { QAndroidJniObject jUrl = QAndroidJniObject::fromString(url.toString()); QAndroidJniObject jIntent("android/content/Intent", "(Ljava/lang/String;)V", jUrl.object<jstring>()); QAndroidJniObject jActivity = QtAndroid::androidActivity(); jActivity.callObjectMethod("startActivity", "(Landroid/content/Intent;)V", jIntent.object()); } }; class MediaPlayer : public QObject { Q_OBJECT public: MediaPlayer(QObject *parent = nullptr) : QObject(parent) { m_player = new QMediaPlayer(this); connect(m_player, &QMediaPlayer::stateChanged, this, &MediaPlayer::stateChanged); } signals: void mediaStateChanged(QMediaPlayer::State state); public slots: void play(const QUrl &url) { m_player->setMedia(url); m_player->play(); } void pause() { m_player->pause(); } void stop() { m_player->stop(); } private slots: void stateChanged(QMediaPlayer::State state) { emit mediaStateChanged(state); } private: QMediaPlayer *m_player; }; int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); AndroidPlayer androidPlayer; MediaPlayer mediaPlayer; QObject::connect(&androidPlayer, &AndroidPlayer::play, &mediaPlayer, &MediaPlayer::play); QQuickView view; view.rootContext()->setContextProperty("androidPlayer", &androidPlayer); view.rootContext()->setContextProperty("mediaPlayer", &mediaPlayer); view.setSource(QUrl("qrc:/main.qml")); view.show(); return app.exec(); } ``` 上面的代码中,我们创建了一个名为 `AndroidPlayer` 的类,用于在Android上打开视频URL。我们通过调用 `QAndroidJniObject` 和 `QtAndroid::androidActivity()` 来实现这一点。我们还创建了一个名为 `MediaPlayer` 的类,用于播放视频。我们在 `MediaPlayer` 的构造函数中创建了一个 `QMediaPlayer` 对象,并将其连接到 `stateChanged()` 槽。我们通过将 `AndroidPlayer` 和 `MediaPlayer` 连接起来来实现播放视频。最后,我们将 `AndroidPlayer` 和 `MediaPlayer` 的实例作为上下文属性添加到QML视图中,以便可以在QML中访问它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值