2013-06-04 54 views
1

我需要使用QML在BB10上製作一個小應用程序,它可以錄製和播放一些聲音。我有所有需要的permision(麥克風和存儲文件)和驗證碼:QML中的錄音機BB10

import bb.cascades 1.0 
import bb.multimedia 1.0 

Page { 
    property string dataUrl; 

    Container { 
     background: Color.create("#001100") 
     layout: StackLayout { 
     } 

     attachedObjects: [ 
      MediaPlayer { 
       id: audioPlayer 
       sourceUrl: dataUrl + "/recording.mp4" 
      }, 
      AudioRecorder { 
       id: recorder 

       outputUrl: dataUrl + "/recording.mp4" 
      } 
     ] 

     Button { 
      id: btnRecord 
      text: "Record" 

      onClicked: { 
       recorder.record(); 
      } 
     } 

     Button { 
      id: btnStop 
      text: "Stop Record" 

      onClicked: { 
       recorder.reset(); 
      } 
     } 

     Button { 
      text: "Play Audio" 
      onClicked: { 
       audioPlayer.play() 
      } 
     } 

     Button { 
      text: "Stop Audio" 
      onClicked: {audioPlayer.stop() 
      } 
     } 
    } 

} 

運行,我可以看到所有的按鈕,但記錄和/或播放後不工作。我不知道什麼是錯的。我不能看到任何錯誤。

回答

1

你快到了。問題是你的sourceUrl是錯誤的。存儲您的錄音的最佳地點是在您的應用程序的data directory中,但您的QML不知道它在哪裏。

要解決此問題,您需要使用C++將應用程序的數據路徑公開到您的QML。您可以使用屬性(more info here)來執行此操作。

在您創建對象AbstractPane的位置(在我的情況下稱爲root)下添加以下C++代碼。這通常在applicationui.cpp完成。

root->setProperty("dataUrl", "file://" + QDir::currentPath() + "/data"); 

現在dataUrl屬性添加到您的QML,並用它爲您的sourceUrl

Page { 
    property string dataUrl; 

    Container { 
     background: Color.create("#001100") 
     layout: StackLayout { 
     } 

     attachedObjects: [ 
      MediaPlayer { 
       id: audioPlayer 
       sourceUrl: dataUrl + "/recording.m4a" 
      }, 
      AudioRecorder { 
       id: recorder 
       outputUrl: dataUrl + "/recording.m4a" 
      } 
     ] 
     .... 
    } 

編輯:請確保您撥打audioPlayer.reset()完成錄音後,這迫使玩家重新加載錄製的音頻。如果您不這樣做,您的音頻播放可能會被截斷。

+0

仍然沒有。按鈕是diplayed但沒有工作。我調試我的應用程序,我看到'com.example.Audio.testDev_ample_Audiodd28f885.315166862默認9000警告AudioRecorder ::準備:錯誤附加輸入源。 url = audio:default,error = UnsupportedMediaType' – kpojasek

+0

我的意思是錄音按鈕 – kpojasek

+0

你使用模擬器還是真實設備? – donturner