私はlibgdxライブラリとアンドロイドアプリでmp3の歌をロードしたいが、私は働く方法を見つけられない。私はどのようにこの "問題"のプログラムを知りません。libGDXでAndroidで音楽を読み込む方法は?
アセットマネージャはmp3ソングの作品のクラスですか?
私もこの方法を見つけました:
Gdx.files.newMusic(file);
が、Androidのドント作業やデスクトップで同じコードの仕事を。
更新: 解析方法
public void parse() {
JsonReader reader = new JsonReader();
JsonValue rootElem = reader.parse(file);
JsonValue songDataElem = rootElem.get("songData");
JsonValue notesDataElem = songDataElem.get("notes");
JsonValue barsDataElem = songDataElem.get("bars");
JsonValue keysDataElem = songDataElem.get("keys");
JsonValue audioDataElem = rootElem.get("audioData");
NoteData[] notes = new NoteData[notesDataElem.size];
for (int i = 0; i < notesDataElem.size; i++) {
notes[i] = new NoteData(notesDataElem.get(i).getInt("pitch"), notesDataElem.get(i).getFloat("time"));
}
BarData[] bars = new BarData[barsDataElem.size];
for (int i = 0; i < barsDataElem.size; i++) {
BarData bar = new BarData(barsDataElem.get(i).getFloat("time"));
bars[i] = bar;
}
char[] keys = new char[keysDataElem.size];
for (int i = 0; i < keysDataElem.size; i++) {
keys[i] = keysDataElem.getChar(i);
}
float tempo = songDataElem.getFloat("tempo");
String file = audioDataElem.getString("file");
songData = new SongData(notes, bars, keys, tempo);
parsed = true;
}
とコンストラクタ:メインクラスで
public SongFile(FileHandle file) {
manager = new AssetManager(new ExternalFileHandleResolver());
file = Gdx.files.external(file.path());//30
if (file.exists()) {
manager.load(file.path(), Music.class);
manager.finishLoading();
music = manager.get(file.path(), Music.class);
music.setLooping(true);
music.play();
}
}
:
String file = "/storage/emulated/0/download/prueba.mp3";
SongFile songFile = new SongFile(new FileHandle(file));
songFile.parse();
song = songFile.makeSong();
これはおそらくコードについてではなく、LibGDXに入る方法です。ファイルの拡張子、サンプルレート、その他の属性を確認してください。 LibGDXのいくつかのファイルを再生していないアンドロイドに関するいくつかのスレッドがあります。私にも起こりましたが、しばらく私はLibGDXを使用していたので、正確に覚えています。 – Thracian
@ fatih-ozcanは、そのサンプルレートとフォーマットがそのアンドロイドでサポートされているかどうかを確認しますか?と思う特定のフォルダにのみファイルを保持する必要があります。たぶん、apropular libGdx githubプロジェクトの音楽ファイルを使ってテストしてみてください。うまくいきます。 – tgkprog
はい、ファイルの属性を確認する必要があります。ここやLibGDXフォーラムにもいくつかのスレッドがあります。それはAssetManager、またはあなたが置いたフォルダとは何の関係もありません。彼らは直接資産フォルダの内側にすることができます。しかし、物事をきちんと保つために、私はそれらをアセットフォルダのオーディオフォルダの中に入れておく。 – Thracian