Android版、データの取り扱い方とファイル名の注意


 アンドロイド版のデータの取り扱い方をやります。
 
 
 説明書によるとデータは、音楽ファイルは assetsフォルダに、その他は data.dpm(データファイル)を使うとあるのですが、現在の所データファイルはあんまり機能しないし(HSP3.4の場合、3.5βなら使える)、とりあえずここではデータの取り扱い説明として、全部 assetsフォルダに放り込む、という手法を使います。

 データパックの使い方は次章を参照して下さい。

 これの問題は、説明書によると「assetsフォルダのリソースのサイズ・個数に制限があるため、1MBを越える大きなファイルを多数使用する場合は、data.dpmのデータフォルダを使用してください」という事なので、大きなデータを使うのには制限があるのかも知れません。

 一応今の所、自分のカードゲームのような、中規模のものでは問題は出てません(全部で 30MBくらい。音データ以外で 1MBを超えるデータは 2つくらい)

 

 それでは、画像と音楽と配列変数のデータをテストします。
 ファイルは .pngと .mp3と .datです。

#include "hsp3dish.as"

	celload "test.png",1	; 画像の読み込み
	mmload "oukoku.mp3",1	; 音楽の読み込み

	dim data,3,3
	 bload "data.dat",data	; 配列データの読み込み


	redraw 0
	 color 1,1,1 : boxf : color 255,255,255

	 celput 1	; 画像書く
	 mmplay 1	; 音楽鳴らす

	 repeat 3 : y=cnt	; 配列データ書く
	  repeat 3 : x=cnt
	   pos x*20+10,y*20+150 : mes data(x,y)
	  loop
	 loop
	redraw 1

 assetsフォルダ内のデータもパスの指定は要りません。
 そのまま celload “test.png”と書けばOKです。

 それから bsave、bloadも(たぶん)assetsフォルダ内(実機内の)に、パスの指定無しで普通にされます。
 
 
 こんな感じになります
img00930
 音楽は鳴ってます(笑)
 
 
 これを Andoroid版でビルドするには、まずプロジェクトファイルを作って
img00931
 
 
 作成されたプロジェクトファイル内の assetsフォルダにデータを入れます
img00932

img00933
 
 
 プログラムを指定したら、ビルドしてみましょう
img00934

 できたら実機を接続して転送します
img00935
 
 
 転送されたアプリを実行します
device-2016-07-13-095703
 音楽もちゃんと鳴ってます

 表示の設定を何もしてないので、実機の解像度(720 × 1280)になってます。
 解像度を変えてみましょう。
 
 
 HSP3.4の場合。

  マニュアル : 画面サイズのスケーリングについて
 
 
 プロジェクトファイルの jniフォルダにある、main.cファイルを開きます
main.c

 画像はテキストエディタの Meryで開いてます
img00939
 この部分で設定します

 設定を有効にするには、コメントアウトの「//」を消します
higo_

 解像度は実機の半分の(360 × 640)にしてます。
 scaleは表示倍率ですから、特にいじらなくて良いでしょう。
 autoscaleは 0の時 viewの解像度に合わせて全画面表示します。

 main.cファイルを上書き保存したら、ビルドして転送し、実行してみましょう。
device-2016-07-13-122315
 できました、表示が2倍(解像度が半分)になってます
 
 
 3.5βの場合。

 hspフォルダ → sample → hsp3dish → hsp3dish.iniファイルをコピーして、プロジェクトファイルのhspフォルダに貼り付けます
hsp3dish.ini

 開いて編集したら上書きします
img00942
 設定内容は同じです

 3.5βマニュアルにも書いてあります(記述が3.4と違う)
 autoscale 0の時 wx、wyの解像度に合わせて全画面表示します。

 同じく、ビルド、転送して実行してみます
device-2016-07-13-122315
 
 
 
ファイル名の注意

 大文字と小文字の扱いに注意が要ります。
 
 
 プログラムの拡張子を大文字にしてみます。
 celload “test.PNG“,1

 ファイル名の方は小文字のままです。
 ファイル名 → test.png
 
 
 一度クリーンボタンを押してビルドファイルをクリア(消去)してから、再度ビルドします(2回目なので。しなくてもできるけど一応)。
img00946

 エラーの内容を確認するために Logcatを押してモニターを開いておきます。
Logcat

 ビルドして転送し、実行します。

 自分の所の実機では、立ち上がらずにすぐに閉じられました。

 モニターを見てみます
img00944

 Error 13、Picture file missing(んな画像ファイルはみつからんよ)と出てますね。

 HSPのエラー番号の意味と対処 HSPミニ講座さんのページ
 
 
 拡張子で無くてファイル名ならどうだろう?
 
 ソース → celload “TEST.png”,1
 ファイル名 → test.png
 
 
 やってみたら同じ Error 13でした。

 と言う事で Android版の場合、ソースとファイル名は大文字小文字までキッチリ合わせる必要があるようです。
 
 
 次に拡張子に大文字は使えるのでしょうか?

 ソースとファイル名の拡張子をそれぞれ大文字にしてみます。
 test.PNG

 転送して実行してみたら、特にエラーは出ませんけど、画面は真っ黒(読み込みはされるが表示はされない?)で、なぜか一度戻るボタンを押してからもう一度立ち上げると表示されているという謎仕様でした。

device-2016-07-16-115230

 原因が分かりました。
 pngに比べて PNGは読み込みが遅いという可能性があります。

 repeatで何回も表示するようにしたら 2回目からは表示されます。

 なぜ遅いのかは全く分かりませんが PNG拡張子が使えないという訳では無いようです。
 
 
 拡張子では無くて、ファイル名ならどうでしょう?
 TEST.png

 こっちは問題無いようです
device-2016-07-16-115624
 
 
 という訳で一応、大文字でも小文字でも構わないみたいです。
 
 
 オマケでファイル名に全角を使うとどうなのでしょう。

 そもそもコンパイルが通りませんでした
img00952

 ビルドが失敗した時は BUILD FAILEDとでます。
 たぶん FAILEDと表示されたら、どんなものでも失敗のはずです。

 Invalid filenameとか書かれてますから、そのファイルネームは見えなかったとか何とか言ってるんだと思います。
 
 
 そんな訳なのでデータファイル名は、半角英数字で、ファイル名とソースの指定名を大文字小文字までキッチリ合わせる、という事です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です