剛剛接觸了一下要在安卓上面編寫媒體音頻軟件,但是看了很多其他的文章,都是建議使用QML去寫MediaPlayer。 本人是用QWidgetC++來實現(xiàn)的,一個簡單的測試代碼:
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是獲取到安卓的音樂相關(guān)的目錄,可以自己用QFlieInfo這個類來搜索相關(guān)的音頻文件可以實現(xiàn)一個簡單的播放器,因為是測試所以也沒有寫那么詳細(xì),主要看能否跑通。 代碼中使用setMedia來設(shè)置播放的文件路徑,這里只是單一的測試音頻,視頻目前沒有測試。設(shè)置好路徑之后。調(diào)用play就可以播放了。
還有很多的方法可以獲取音頻中包含的信息,可以參考QT的幫助
一些常用的提供的對外接口有
pause() ?//暫停
stop()//停止
?????在使用QMediaPlayer時,發(fā)現(xiàn)路徑必須要在前面加上“file://”,否則播放失敗。
原先也測試過用QSoundEffect這個類,發(fā)現(xiàn)好像只能播放Wav的格式,MP3的格式報錯。目前使用QMediaPlayer在安卓上面播放正常。 具體的使用后續(xù)會完善更新。