わし的雑感記♪

日々の出来事等を記録します。 思った事、感じた事などもつづります。

Android

android music player

androidのMusic Playerです。
前々から作業は進めていましたが、アートワークの引き抜きで壁にぶつかっておりました。
当時はandroid 2.1向けに作ってましたので、中々ここが難しかった。
メタデータは単純に先頭から1bitずつ読み込む、で取っていたんですが。
javaなので遅いw

今回はandroid4.0.3向けにしてあるので、はたと専用クラスが使えるのでは?と気が付きました。
MediaMetadataRetrieverクラスですね。
ちょっと関連部分のソースを。

import android.media.MediaMetadataRetriever;

MediaMetadataRetriever mmr = new MediaMetadataRetriever();
   mmr.setDataSource(readFilePath);
   
   //各要素の取得
   albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
   track = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER);
   songTitle = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
   auther = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR);
   songWriter = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_WRITER);
   comment = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_COMPILATION);
   songWriter2 = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
   ad = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR);
   disk = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DISC_NUMBER);
   gnre = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);
   //duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
   
   //アートワークの取得
   byte[] artwork2 = mmr.getEmbeddedPicture();
   artwork = BitmapFactory.decodeByteArray(artwork2, 0, artwork2.length);

アートワークだけはBitmap形式にする必要があります。
readFilePathがmp4ファイルのパスです。
で、実行してみますと。

Player2

ばっちりとアートワークまでw
今までの2ヶ月間を・・・
と言う言葉が出掛かりますが、まぁ、技術不足、Google力不足。
馬と鹿が大量に登場しそうなので、黙っておきます。
あぁ、しかし結構打撃は大きい・・・w


RPG at Android-2


続きです。
結論は、サンプルソースとしては一旦完成しました。
ボスを倒しても終わらなかったのは、バグと言う奴ですw

rpg2
先ず、戦闘画面で問題がおきました。
上記は絵も名前もサンプルの通りです。
名前から連想出来るように、彼は雑魚と言う設定ですが。
この画面に成った途端に固まりました。
調べてみると、とても恥ずかしい永久ループw
whileの条件が、サンプルの通りにやるのが正しいのですが、そうするとOnTouchEventハンドラが取れない。
仕方ないので、一旦whileをコメントアウトしました。

rpg4
マップ画面。
画面が小さくなりましたが、理由は前のままだとどうしても画面の一部が再描画されない。
理由は、AVDの画面サイズが480*800なのに、Canvasを800*800で初期化してました。
やれやれ、と言う所です。
上記では全く問題は発生しませんでした。

rpg6
戦闘画面と、マップ画面が重なっています。
それが、下の戦闘画面はblinkするのです。
次の瞬間には、スラスラが消えて、直ぐに出現します。
恐らく、SurfaceViewはDoubleBufferなんだろう、と辺りを付けて調べたらドンピシャリでした。
常にBufferを初期化してやれば、上手く表示はされました。
但し、このやり方は重くなりますし、今一スマートじゃありませんね。

rpg8
彼がラスボスのグリドラです。
どう考えても、あの有名なRPG!
と言うのはさて置いて、サンプルの設定ですと一方的に殺されました。
強すぎですw
ちょっとパラメータを弄くって、それでも負けて、最後はかなりパラメータを弄くって勝ちましたw
しかし、エンディングに成らずにマップ画面に戻ってしまったw

今の所、問題はマップ上の移動ですかね?
バンゲリング○イみたいに、一度動き出すと永久にその方向に向けて突進します。
木にぶつかるか、敵が出現しないと止まりません。
とてもやりにくいw
暇を見て弄りますか・・・


RPG at android -1

久し振りに涼しくなってきましたので、ちょっとこちらのブログを書いてみます。
CentOS環境は取り合えず構築して、
・Apache
・Tomcat
・Mysql
・PHP
・CakePHP
・Wordpress
・JDK

辺りを入れてみました。
CakePHPとWordpressは問題なく稼動して、JDKの方も特に問題なくMySQLと連動しました。
Seasar2の方もざっくり学習して、しかしどうもStrutsとデザインパターンのしっかりした知識が必要のようで。
何故かRPGをandroidで作り始める、と言う意味不明な今日この頃です。

rpg1
サンプルコードをぱちぱち打ち込むとこんな感じです。
まだ動きませんけれどね。
絵はサンプルについていた奴を使っています。
今回はresourceフォルダに格納してありますが、SDカード内部から読むように変えるのは必須ですね。
NDKを使って云々とかもありますけれど・・・
多分HTML5で書いて、Chromeで動かすのが賢いんでしょうが。
諸々勉強中です。
わし的検索






楽天市場
記事検索
livedoor プロフィール
livedoor × FLO:Q
QRコード
QRコード

  • ライブドアブログ