|
 |
|
2016/6/9(Thu) 21:01:42|NO.75803
どうも、
hsp3dishを使ってAndroidアプリを開発しているのですが、
音楽を再生させる方法が分かりません。
リファレンスでは「mp3,wavファイルは必ずassetsフォルダに入れる」と書いていたのにも
関わらず「assets」フォルダに音楽ファイルを入れても、
すぐにアプリが落ちてしまいます。
プログラムのmmload命令に書いた読み込みするファイル名も間違えてないし、
assetsフォルダに音楽ファイルを入れたのに何故か動きません。
【開発環境】
JDK 1.8.0_91
SDK 「Tools」「Platform-tools」「Android 5.0.1」「Android 5.1.1」インストール済み
NDK r7c
ANT 1.9.2
プロジェクトフォルダ:C:\Users\(ユーザー名)\Desktop\test android program1\
【問題のビルドしたスクリプト】
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
#module
#deffunc fprt str _p1
; fprt "message"
; (画像を使用したフォント表示を行ないます)
; "message" : 表示するメッセージ
; 表示座標は、posで指定した位置から
;
i=0:st=_p1
repeat
a1=peek(st,i):i++:if a1=0 : break
if a1=13 {
a1=peek(st,i)
if a1=10 : i++
continue ; 改行
} else {
celput 1,a1
}
loop
return
#global
celload "font.png",1 : celdiv 1,16,16,0,0
mmload "(ファイル名).mp3",1,1 ←ここ
gsel 0
mmplay 1
repeat
redraw 0
color 0,0,0 : boxf
color 255,255,255
pos 0,0
fprt "DEBUG"
pos 0,16
fprt ""
redraw 1
wait 1
loop
※fprt…オリジナルフォントを描画する命令です。
バグ?いや、ケアレスミス?
どなたか、音楽を正常に鳴らす方法を教えてください!
|
|
2016/6/9(Thu) 21:49:29|NO.75806
こんにちは。
mmload の行と mmplay の行をコメントアウトしてAndroid上で起動した場合はアプリは落ちずに動きますでしょうか?
コメントアウトしてアプリが落ちないようであれば mmload/mmplayでの箇所での落ちているのが間違いないかと思われますが、どうでしょうか?
たまに間違って名前の似ているプロジェクトフォルダ内の「assets」フォルダにファイルを入れるといった凡ミスが無くもないので(恥ずかしながら私はありました^^;)、必要であれば、mmload でMP3を読み込ませる前に
exist "(ファイル名).mp3"
if strsize == -1 {
dialog "(ファイル名).mp3 が存在しません"
}
などのように、ファイルがちゃんと存在しているかを調べるのもアプリを落ちる原因を探すうえでも書いておくのも良いのかもしれません。
それから過去ログで同様の質問があったようで、原因はMP3からwavへの変換ミスだったようです。
・hSP3Dish リリースビルドによる不具合
http://hsp.tv/play/pforum.php?mode=pastwch&num=64688
|
|
2016/6/10(Fri) 06:02:18|NO.75813
うーん…
ビルドしたプロジェクトフォルダのassetsフォルダに
(ファイル名が)半角4文字、1MB以内のMP3ファイルを入れているのにも関わらず
読み込み時、strsizeとifでファイルがあるかないかを判断するプログラムを組んで
テスト後、ビルドしインストール後起動してみると、ファイルがないと判断されます。
…mmloadでエラーが発生していたようです。
assetsフォルダから音楽ファイル(.mp3)を読み込む時に
パスは「"(ファイル名).mp3"」ではなく「"assets/(ファイル名).mp3」にしないと
認識しないのかなぁ…と思ったりもしますが、そんなことはないのでしょうか?
ちなみに、wav変換は1MBを普通に超えましたのでやめました。
変換はaudacityで行っています。
|
|
2016/6/10(Fri) 08:52:06|NO.75814
こんにちは。
>パスは「"(ファイル名).mp3"」ではなく「"assets/(ファイル名).mp3」にしないと
mmload "(ファイル名).mp3" の形で問題ないです。
プロジェクトフォルダに名前の似たフォルダはありますでしょうか?
また、一度Dish Helperの「クリーン」ボタンを押してから「ビルド」してみてはいかがでしょうか?
|
|
2016/6/10(Fri) 13:35:57|NO.75817
こんにちは。ふりぷろさん。
内容につきまして、しまくろねこさんの言うように盆ミスの可能性が高い、
と言うか私もボンミス良くしますので…
>すぐにアプリが落ちてしまいます。
と言うことですが、起動後にすぐ落ちるのか、最初はだけ動いてすぐに途中で落ちるのか、
どちらでしょうか。
またLogcatでコンソール表示か確認出来るならおそらく「12」が該当すると思うので、
やはり「asserts」フォルダなどを良く確認してください。
|
|
2016/6/10(Fri) 18:54:48|NO.75822
ご返答が遅れて申し訳ありません。
しまくろねこさん OKさん
クリーンすると「BUILD FAILED」と表示されるので
新しいプロジェクトを作成し、ビルド後Androidタブレットにインストールしましたが、
assetsフォルダに音楽ファイルを入れてアプリを起動させても最初の方で
落ちてしまいます。
プログラムが参照しているファイル名とassetsフォルダに入っているファイルの名前と
拡張子は同じなんですが、なぜか読み込みができません。
あと、Logcatでのエラーは確認できませんでした。
|
|
2016/6/10(Fri) 22:03:20|NO.75827
こんばんは
>ご返答が遅れて申し訳ありません。
いえいえ、ていねいにありがとうございます。でも気にしないでね!
ええっとまず
>BUILD FAILED
なのでうまくbuild出来ていません、なので「○○.apk」ファイルは無いはずなんですけど。
今回は「○○.apk」は作成されていて実機にインストールしてアプリケーションを起動すると、
最初だけ動いてから、例えばタイトル画面は出るけどホーム画面に戻っちゃう形でよろしいですか?
とりあえず一度、「BUILD SUCCESSFUL」を目指してみて下さい。
|
|
2016/6/10(Fri) 23:57:26|NO.75831
すいませんスクリプト実機でやってませんでした。
なので実機で実行した結果
「BUILD SUCCESSFUL」
であってもアプリケーションが落ちる現象を確認しました。
結論は音声関係のバグではありません。
画像関係のバグです。
実際「9MB」以上の「.mp3」も再生できました。
細かい原因はまたそちらで究明してみて下さい。
私も時間があるときに確認してみようと思います。
|
|
2016/6/11(Sat) 08:17:13|NO.75833
画像関連バグ…?
とのことで、スプリクトを変えてみましたがダメでした。
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
exist "music.mp3" : if strsize = -1 {
dialog "music.mp3というファイルが見つかりません"
exist "assets/music.mp3" : if strsize = -1 {
dialog "asset/music.mp3が存在しません"
}else{
mmload "assets/music.mp3",1,1
dialog "読み込みました!"
mmplay 1
stop
}
}else{
mmload "music.mp3",1,1
dialog "読み込みました!!"
mmplay 1
stop
}
これでも音楽ファイルを読みません。
|
|
2016/6/12(Sun) 10:16:02|NO.75850
OKさん しまくろねこさん
よく名前が似たフォルダ等はなく、競合?は考えられないです。
クリーンも「BUILD SUCESS」と出ましたし、
ビルドも問題なく出来ています。
…もしかして、
プロジェクトフォルダ内のプロジェクトフォルダ(?)をそのまま
Andorid端末のストレージに入れるというのがそもそも間違いなのでしょうか?
|
|
2016/6/12(Sun) 20:10:18|NO.75858
こんにちは。
> プロジェクトフォルダ内のプロジェクトフォルダ(?)をそのまま
> Andorid端末のストレージに入れるというのがそもそも間違いなのでしょうか?
Android端末のストレージに入れるのは、プロジェクトフォルダの「bin」フォルダ内に「(プロジェクト名)-debug.apk」という名前で生成されたAPKファイルのみを入れてあげればOKです。
なので、Android実機にコピーしたプロジェクトフォルダは削除しましょう。
作成したアプリをAndroid実機にインストールするには2つ方法があります。
1つ目は、上記で書いたようなAPKファイルをAndroid実機にコピーして手動でインストールする方法。
2つ目は、USBケーブルを繋いでDish Helperの「転送」ボタンをクリックすることにより、Android実機に直接アプリをインストールする方法。
2つ目方法を利用するとビルド後のAndroid実機でのテストが直ぐに出来やすくなります。(※要ADBドライバ)
2つ目の方法については、以下の過去ログを参考にしてみてください。
・Dishでアプリテストを 白ロムでできますか?
http://hsp.tv/play/pforum.php?mode=pastwch&num=61890
・HSP3Dishでapkファイルを作ろうとしても失敗して作成されない
http://hsp.tv/play/pforum.php?mode=pastwch&num=73388
|
|
2016/6/12(Sun) 23:10:10|NO.75866
ああわかんないっすね。
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
/*#module
#deffunc fprt str _p1
; fprt "message"
; (画像を使用したフォント表示を行ないます)
; "message" : 表示するメッセージ
; 表示座標は、posで指定した位置から
;
i=0:st=_p1
repeat
a1=peek(st,i):i++:if a1=0 : break
if a1=13 {
a1=peek(st,i)
if a1=10 : i++
continue ; 改行
} else {
celput 1,a1
}
loop
return
#global
*/
//celload "font.png",1
//celdiv 1,16,16,0,0
////////////////////////////////////////////////
mmload "V.mp3",1,1 //←ここ
gsel 0
mmplay 1
repeat
redraw 0
color 0,0,0 : boxf
color 255,255,255
pos 0,0
//fprt "DEBUG"
pos 0,16
//fprt ""
redraw 1
wait 1
loop
////////////////////////////////////////////////
でも動くし
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
exist "V.mp3" : if strsize = -1 {
dialog "V.mp3というファイルが見つかりません"
exist "assets/music.mp3" : if strsize = -1 {
dialog "asset/music.mp3が存在しません"
}else{
//mmload "assets/music.mp3",1,1
mmload "V.mp3",1,1
dialog "読み込みました!"
mmplay 1
stop
}
}else{
//mmload "music.mp3",1,1
mmload "V.mp3",1,1
dialog "読み込みました!!"
mmplay 1
stop
}
でも動くんですよ。(コピペでスンマセン)
まさかボリュームOFFとか...ないですよね。
> プロジェクトフォルダ内のプロジェクトフォルダ(?)をそのまま
> Andorid端末のストレージに入れるというのがそもそも間違いなのでしょうか?
の件は、しまくろねこさまのおっしゃるとおりだし。
あと、こちらから質問で失礼します。
二つ質問させてください。
①
NO.75833の時点では "読み込みました!!"の表示がでないだけで
アプリケーションは落ちないですか?落ちますか?
②
NO.75813で使用してる
>変換はaudacityで行っています。
のソフトウエアは、私はあえて試しませんので、べつのファイル、例えば.wavファイルなど
ではいかがですか?

| |
|
2016/6/13(Mon) 00:25:50|NO.75867
>assetsフォルダに音楽ファイルを入れてアプリを起動させても
がちょっと気になったので確認させてください。
ソースのあるディレクトリ内にassetsというフォルダを作ったりしてませんか?
C:\Users\(ユーザー名)\Desktop\test android program1\
内に新規プロジェクト名のフォルダがあり、その中にあるassetsに音楽ファイルなど入れた上で
ビルド、をしていますか?
必要なファイルが無くてもビルドは通っちゃいますんで注意です。
出来たapkの容量が音楽ファイルぶんも入っている感じどうかもチェックしてみてください。
|
|
2016/6/13(Mon) 15:49:22|NO.75874
おや、解決してないようで(´・ω・)
ためしに、ふりぷろさんのプログラムをHSP3Dish helperをつかいビルド。
実機に転送して実行してみました。
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
exist "music.mp3" : if strsize = -1 {
dialog "music.mp3というファイルが見つかりません"
exist "assets/music.mp3" : if strsize = -1 {
dialog "asset/music.mp3が存在しません"
}else{
mmload "assets/music.mp3",1,1
dialog "読み込みました!"
mmplay 1
stop
}
}else{
mmload "music.mp3",1,1
dialog "読み込みました!!"
mmplay 1
stop
}
(´・ω・)あれ?音楽が鳴るどころか、ダイアログも表示されないぞ・・。
少し減らしてみる
#include "hsp3dish.as"
screen 0,ginfo_sx,ginfo_sy
exist "music.mp3"
if strsize = -1 {
dialog "music.mp3というファイルが見つかりません"
stop
}
mmload "music.mp3",1,1
dialog "読み込みました!"
mmplay 1
stop
(´ーω-)それでも音もダイアログもダメ。どうして?
しかたなく、不要なの消して、メインのストップも無くして、最後ループにしてみた
#include "hsp3dish.as"
exist "music.mp3"
if strsize = -1 {
dialog "music.mp3というファイルが見つかりません"
stop
}
mmload "music.mp3",1,1
dialog "読み込みました!"
mmplay 1
repeat
await 17
loop
(`・ω・)あ、音出た。
しかしその後、他のプログラムに戻して実行してみたら、どれも音出た。
結論:よ く わ か ん な い
|
|
2016/6/13(Mon) 18:06:13|NO.75875
hsp3dishではscreenはHSP3Dish非互換コマンドらしいです。
デバイスによって異なる仕様だそうです。
ためしにscreenの行だけ消したプログラムを試したらどうでしょうか?
|
|
2016/6/13(Mon) 22:55:53|NO.75879
こんにちは。
下記のスクリプトを実機で試してみましたが、特に落ちることなく音も再生されています。
#include "hsp3dish.as"
screen 0, ginfo_sx, ginfo_sy
mmload "music.mp3", 1, 1
gsel 0
mmplay 1
repeat
redraw 0
color 0, 0, 0 : boxf
color 255, 255, 255 : pos 0,0 : mes "DEBUG"
redraw 1
wait 16
loop
撃さんの書き込みにもあるように、プロジェクトフォルダの設定場所がソースと同じ場所になってしまっているのが怪しいのではないかと思います。
通常プロジェクトフォルダは、ソースが存在している場所とは別の場所にしておくのが良いかと思います。
時間ができたので個人のページにて簡単ではありますが、HSP3Dishの講座を作りました。
Dish Helper環境の構築からビルド後の実機へのインストールまでの作業を解説しています。
よろしければ今一度、Dish Helperの「Androidオプション設定」のプロジェクトの部分を見直してみてください。
・『しまくろねこ』のホームページ2号店
https://sites.google.com/site/simakuroneko/
・HSP3Dish android(NDK)版プログラミングガイド
(HSP3フォルダ)内の「doclib/hsp3dish_ndk.htm」
|
|
2016/6/17(Fri) 21:57:28|NO.75898
ご返答遅れて申し訳ありません。
(理由としては2泊3日用事で遠くに行っていました)
みなさん、いろんな検証や意見ありがとうございます!
おかげで解決できました。感無量です!
|
|
2016/6/17(Fri) 22:01:33|NO.75899
OKさん
音量は0ということは絶対にありません。
あと、No.75883時点ではまだ解決していませんでした。
mp3をwavにしてみてもダメでした。
|
|
2016/6/17(Fri) 22:48:51|NO.75900
解決済と言うことで、良かったです、
あと、質問にわざわざ答えさせてすんません、
また、答えてくださってありがとうございました。
|
|
2016/6/18(Sat) 09:30:04|NO.75902
撃さん
そういうルールがあるとは知りませんでした。僕もまだまだ初心者ですね。
プロジェクトフォルダのassetsフォルダに音楽ファイルを入れてビルドすると
音楽が再生できました。
ありがとうございました!
|
|
2016/6/24(Fri) 20:13:00|NO.75975
|
|
2016/9/26(Mon) 23:02:51|NO.77004
上は荒らしですかね。
|
|
2016/9/27(Tue) 16:43:45|NO.77009
Androidで唯一全バージョン対応してるのがoggですのでそれに変換されてみてはどうですか?
oggの方が再生トラブルがほぼないのでおすすめです。
mp3も全対応みたいですが、サンプリングレートが高いと再生できない場合もあります。
または、APIの使用方法が間違っているかもしれません(helper側で)
lolipopからは、SoundPoolクラスを利用した音楽再生は非推奨になりました。
そのかわりにそのクラスにある、Builderクラスを使うべきとされています。
ここが問題ですかね?違うかもしれません。
|
|
2016/10/3(Mon) 20:55:39|NO.77043
助言ありがとうございます!
これからもHSPの方で開発を進めていくので
またわからないことがありましたら
その時はよろしくお願いします。
HSP3DISHの音楽再生についての質問スレで
教えてくれたみなさま、本当にありがとうございました!
|
|