用Qtl编写媒体软件到安卓的实现
扫描二维码
随时随地手机看文章
刚刚接触了一下要在安卓上面编写媒体音频软件,但是看了很多其他的文章,都是建议使用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());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在安卓上面播放正常。 具体的使用后续会完善更新。