2013-04-10 26 views
0
 //Using iTunes Controller 
     iTunes itc = new iTunes(); 
     itc.playFile(filePath); // Takes type String 

好像正確的行動路線。不過,我希望用戶能夠指定只是歌名...找到適用於Java的iTunes控制器API,如何播放特定歌曲?

我可以用一個提示,讓藝術家和專輯,看看有什麼文件夾瀏覽到,因爲這是iTunes的是如何存儲文件.. (例如:C:\ Users \用戶名\音樂\ iTunes的\ iTunes的媒體\藝術家\專輯\歌曲)

有誰知道一種方法,我可以去直接到指定的歌曲?我一直在尋找一段時間。

下面是我使用的是否有幫助http://www.dot-totally.co.uk/software/itunescon/javadoc-0.2/index.html

更新API的文檔-------------------------- --------

於是我起身....

//Using iTunes Controller -- Still doesn't work 
iTunes itc = new iTunes(); 
ITSourceCollection sc = (ITSourceCollection) itc.getSources(); 
ITSource source = sc.getItemByName(song); 
int trackID = source.getTrackID(); 
// Now what to do with the track id? Look for getTrack by ID, then track.play(); 
// Found that a TrackCollection can return a Track by ID. 
// Need to find out how to get the TrackCollection of the library 

我卡住了.... :(

編輯:

算了一下腠ld只需手動創建一個基於我可以從sourcecollection獲取的信息的曲目。困惑的構造雖然...

ITTrack(com.jacob.com.Dispatch d)

????任何人都可以澄清什麼是正確的語法來創建一個ITTrack對象? 這裏是它的javadoc,我不明白。

http://www.dot-totally.co.uk/software/itunescon/javadoc-0.2/com/dt/iTunesController/ITTrack.html

UPDATE --------------------------------------

好的。所以我使用fetchDispatch()方法來創建一個ITTrack類。 http://www.dot-totally.co.uk/software/itunescon/javadoc-0.2/com/dt/iTunesController/ITObject.html#fetchDispatch()

//Using iTunes Controller -- work in progress 
iTunes itc = new iTunes(); 
ITSourceCollection libsource = (ITSourceCollection) itc.getSources(); 
ITSource trackToPlay = libsource.getItemByName(song); 
ITTrack track = new ITTrack(trackToPlay.fetchDispatch()); 
track.play(); 

我現在得到一個例外:

Exception in thread "main" java.lang.NoSuchMethodError: com.jacob.com.Dispatch.call(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)Lcom/jacob/com/Variant; 
at com.dt.iTunesController.ITSourceCollection.getItemByName(ITSourceCollection.java:49) 
at Build.Clapper3.process(-----.java:117) 
at Build.Clapper3.main(-----.java:232) 

gahhh如此接近!所以我在做項目的「名稱」的入口方法時做錯了什麼......但是什麼?

或許我想如果我輸入:

System.out.println(libsource.toString()); 

找到的源的名稱....但我想它沒有toString()方法? 輸出是:

[email protected] 
+0

我想多閱讀一次文檔並嘗試一些操作。首先看一下'iTunes#getSelectedTracks'。最後,當你回到'ITrack',它有一個'play'方法 – MadProgrammer 2013-04-10 02:41:34

+0

getSelectedTracks似乎只是返回由光標左鍵單擊選中的曲目。我試圖設置它的方式是用戶輸入歌曲標題,它被存儲在一個字符串中。該字符串然後用於通過我需要弄清的某種方法來指定要播放的歌曲。 – Riptyde4 2013-04-10 03:07:53

+0

對不起,我的意思是'getSources' – MadProgrammer 2013-04-10 03:10:03

回答

0

我結束了再殺iTunes的控制器API和產生我自己的JacobGen。我想通了,索引1是IITPlaylistCollection庫的源&,索引1是圖書館的播放列表(所有歌曲),然後叫打()的IITTrack對象。精美的工作,甚至打開iTunes,如果它尚未打開!

ActiveXComponent iTunesCom = new ActiveXComponent("iTunes.Application"); 
Dispatch iTunesController = new Dispatch(iTunesCom.getObject()); 
IiTunes it = new IiTunes(iTunesController); 
IITSourceCollection sourceList = it.getSources(); 
IITSource s = sourceList.getItem(1); // Index 1 is library source 
IITPlaylistCollection pc = s.getPlaylists(); 
IITPlaylist p = pc.getItem(1); // Index 1 is library playlist 
IITTrackCollection tracks = p.getTracks(); 
IITTrack track = tracks.getItemByName(songName); 
track.play(); 

與播放列表類似作品:

ActiveXComponent iTunesCom = new ActiveXComponent("iTunes.Application"); 
Dispatch iTunesController = new Dispatch(iTunesCom.getObject()); 
IiTunes it = new IiTunes(iTunesController); 
IITSourceCollection sourceList = it.getSources(); 
IITSource s = sourceList.getItem(1); // Index 1 is library source 
IITPlaylistCollection pc = s.getPlaylists(); 
IITPlaylist playlist = pc.getItemByName(playlistName); 
playlist.playFirstTrack(); 

感謝您的所有指針都,希望這可以幫助任何人只要有一個類似的問題。我花了很長時間才弄清楚如何讓JacobGen工作,因爲他們幾乎沒有任何文檔在互聯網上的任何地方。如果有人有問題,我很樂意就此發表一篇文章。

+0

你介意發佈你如何使用JacobGen? – 2015-01-04 01:34:43

相關問題