用Qtl编写媒体软件到安卓(待续)

来源:互联网 发布:数据库工程师培训机构 编辑:程序博客网 时间:2024/06/05 04:07

刚刚接触了一下要在安卓上面编写媒体音频软件,但是看了很多其他的文章,都是建议使用QML去写MediaPlayer。

本人是用QWidgetC++来实现的,一个简单的测试代码:

void androidFile::showplay()
{
 
    QAndroidJniObject music = QAndroidJniObject::getStaticObjectField(
                "android/os/Environment",
                "DIRECTORY_MUSIC",
                "Ljava/lang/String;"
                );
    QAndroidJniObject musicDir = QAndroidJniObject::callStaticObjectMethod(
                   "android/os/Environment",
                   "getExternalStoragePublicDirectory",
                   "(Ljava/lang/String;)Ljava/io/File;",
                   music.object<jstring>()
                   );
      musicDir_ = musicDir.toString();
       
      QMediaPlayer  * qtaudioPlayer = new QMediaPlayer;
       musicDir_ = "file://"+musicDir_ + "/123.mp3";
       qDebug()<<"music" <<musicDir_;
       qtaudioPlayer->setMedia(QUrl(musicDir_));
       qDebug()<<"musicQul = "<<QUrl(musicDir_);
       qtaudioPlayer->play();
//       QSoundEffect * Player = new QSoundEffect;
//       Player->setSource(QUrl(musicDir_));
//       Player->play();
}
上面的musicDir是获取到安卓的音乐相关的目录,可以自己用QFlieInfo这个类来搜索相关的音频文件可以实现一个简单的播放器,因为是测试所以也没有写那么详细,主要看能否跑通。
代码中使用setMedia来设置播放的文件路径,这里只是单一的测试音频,视频目前没有测试。设置好路径之后。调用play就可以播放了。

还有很多的方法可以获取音频中包含的信息,可以参考QT的帮助

一些常用的提供的对外接口有

pause()  //暂停

stop()//停止

     在使用QMediaPlayer时,发现路径必须要在前面加上“file://”,否则播放失败。
原先也测试过用QSoundEffect这个类,发现好像只能播放Wav的格式,MP3的格式报错。目前使用QMediaPlayer在安卓上面播放正常。
具体的使用后续会完善更新。
1 0
原创粉丝点击