私はこのテーマに関する様々な質問に様々な回答をしてきましたが、私は結果とそのように見えるいくつかのコードに来ました。私はそれのNSURLの部分に立ち往生している。 iOSグルーオンプロジェクトのassetsフォルダに2つのmp3トラックがあります。私は再生を処理するためにIOSAudioServiceクラスを作った。ビューの再生ボタンからPlay()メソッドに引数を渡しています。実際のファイル以外のものはすべて動作中として登録されています。私は、コードを見ることから無関係の値であるNSErrorを取得しているので、引数が正しく渡されていないか、ファイルを見つけることができません。以下のコード。Gluon iOSオーディオプレーヤー
public AVAudioPlayer backgroundMusic;
private double currentPosition;
NSURL songURL = null;
@Override
public void Play(String filename){
songURL = new NSURL(filename);
try {
if (backgroundMusic != null) {
Resume();
}
else {
//Start the audio at the beginning.
currentPosition = 0;
backgroundMusic = new AVAudioPlayer(songURL);
//create the mendia player and assign it to the audio
backgroundMusic.prepareToPlay();
backgroundMusic.play();}
//catch the audio error
} catch(NSErrorException e) {
System.out.println("error: " + e);
}
}
@Override
public void Stop() {
backgroundMusic.stop();
backgroundMusic = null;
}
@Override
public void Pause() {
currentPosition = backgroundMusic.getCurrentTime();
backgroundMusic.pause();
}
@Override
public void Resume() {
backgroundMusic.setCurrentTime(currentPosition);
backgroundMusic.play();
}
try {
services = (AudioService) Class.forName("com.gluonhq.charm.down.plugins.ios.IOSAudioService").newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
System.out.println("Error " + ex);
}
NSExceptionErrorのcatchブロックでエラーが発生しました。
if (services != null) {
final HBox hBox = new HBox(10,
MaterialDesignIcon.PLAY_ARROW.button(e -> services.Play("/audio.mp3")),
MaterialDesignIcon.PAUSE.button(e -> {
if (!pause) {
services.Pause();
pause = true;
} else {
services.Resume();
pause = false;
}
}),
MaterialDesignIcon.STOP.button(e -> services.Stop()));
//set the HBox alignment
hBox.setAlignment(Pos.CENTER);
hBox.getStyleClass().add("hbox");
//create and set up a vbox to include the image, audio controls and the text then set the alignment
final VBox vBox = new VBox(5, Image(), hBox, text1);
vBox.setAlignment(Pos.CENTER);
setCenter(new StackPane(vBox));
} else {
//start an error if service is null
setCenter(new StackPane(new Label("Only for Android")));
}
Services.get(LifecycleService.class).ifPresent(s -> s.addListener(LifecycleEvent.PAUSE,() -> services.Stop()));
}
私はまた、サービスファクトリクラスを作成し、Audio performance with Javafx for Android (MediaPlayer and NativeAudioService)からインターフェイスが追加audio要素を取り出すのアドバイスに従ってきたし、可能ならば、私は、ビューごとのビューでこれを行うことを意図しています。
エラーのスタックトレースを投稿できますか? –
私はアプリケーションが実際にクラッシュしないスタックトレースを持っていません。私は2000年から始まってエラーが出ます。詳細は今日まで月曜日まで利用できません。エラーは、NSURLがゼロの値を持つため、リソースが見つからないか、または可変ラッピングエラーが発生したことを意味しました。 NSBundleを使用してリソースのパスを最初に見つけ出す必要があるかどうか、私は可能であるとは確信していません。 –
エラーコードはOSStatusエラー2003334207でした。 –