//Using iTunes Controller
iTunes itc = new iTunes();
itc.playFile(filePath); // Takes type String
Вроде правильный ход действий. Однако я хочу, чтобы пользователь мог указать просто название песни...
Я мог бы использовать подсказку, чтобы получить исполнителя и альбом, чтобы увидеть, к каким папкам переходить, поскольку именно так iTunes хранит свои файлы ... (например, C:\Users\username\Music\iTunes\iTunes Media\Artist\Album\song )
Кто-нибудь знает, как я могу просто перейти прямо к указанной песне? Я искал какое-то время.
Вот документы для API, который я использую, если это поможет http://www.dot-totally.co.uk/software/itunescon/javadoc-0.2/index.html
ОБНОВИТЬ----------------------------------
Так я встал....
//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
Я застрял.... :(
РЕДАКТИРОВАТЬ:
Я подумал, что могу просто вручную создать трек на основе информации, которую я могу получить из исходной коллекции. Запутался в конструкторе...
ITTrack(com.jacob.com.Dispatch d)
???? Кто-нибудь может пояснить, каким будет правильный синтаксис для создания объекта ITTrack? вот javadoc для него, я его не понимаю.
http://www.dot-totally.co.uk/software/itunescon/javadoc-0.2/com/dt/iTunesController/ITTrack.html
ОБНОВИТЬ--------------------------------------
В порядке. Поэтому я использовал метод 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)
гах так близко! Итак, я делаю что-то не так с моим методом ввода «имени» элемента .... но что?
Я подумал, может быть, если я введу:
System.out.println(libsource.toString());
чтобы найти имена источников .... но я думаю, что у него нет метода toString ()? вывод был:
com.dt.iTunesController.ITSourceCollection@118278a
iTunes#getSelectedTracks
. В конце концов, когда вы дойдете доITrack
, у него будетplay
метод - person MadProgrammer   schedule 10.04.2013getSources
- person MadProgrammer   schedule 10.04.2013Typically, an ITrack is accessed through an ITTrackCollection. You can retrieve all the tracks defined for a playlist using ITPlaylist.getTracks();
я вижу, чтоITSource
имеетgetPlaylists()
, так что, может быть, вы можете что-то с этим сделать? Но я не получил никаких знаний об этом API. - person Marc-Andre   schedule 10.04.2013