0
        //Using iTunes Controller
        iTunes itc = new iTunes();
        itc.playFile(filePath); // Takes type String

正しい行動のようです。ただ、ユーザーが簡単に曲名を指定できるようにしてほしい...

プロンプトを使用して、アーティストとアルバムを取得して、どのフォルダーを参照するかを確認できます。これは、iTunes がそのファイルを保存する方法だからです...(例: C:\Users\username\Music\iTunes\iTunes Media\Artist\Album\song )

指定した曲に直接行く方法を知っている人はいますか? しばらく探していました。

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

私は立ち往生しています.... :(

編集:

ソースコレクションから取得できる情報に基づいて、手動でトラックを作成できると考えました。しかし、コンストラクタについて混乱しています...

ITTrack(com.jacob.com.Dispatch d)

???? ITTrack オブジェクトを作成するための正しい構文を明確にできる人はいますか? ここにそのjavadocがありますが、わかりません。

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

アップデート - - - - - - - - - - - - - - - - - - -

Ok。そこで、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
4

1 に答える 1

0

私は最終的に iTunes Controller API を破棄し、JacobGen で独自のものを生成しました。インデックス 1 はライブラリ ソースであり、IITPlaylistCollection の場合、インデックス 1 はライブラリ プレイリスト (すべての曲) であり、IITTrack オブジェクトで play() が呼び出されることがわかりました。まだ開いていない場合は、美しく機能し、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 を機能させる方法を理解するのに永遠にかかりました。質問があれば、喜んで投稿します。

于 2013-04-12T20:27:35.637 に答える