アプリの途中経過 0x04
前回から3ヶ月ほど立ってしまいました.
大学が冬季休暇になったのでアプリをアップデートしました. 敵艦の項目をなくして(面倒くさいとか言えないな...)リストによって艦娘を選択できるようにしました.
ダウンロード先はこちらです.
KanCollectActive-debug-0.1.1.apk - Google ドライブ
スペックの低いPCでやっているのでAndroid NDKのビルドが時間がかかるため, Android のCPUがARMでなければ動作しないという欠陥を持っています. そのうち, 改善いたします.
アプリの途中経過 0x03
今回は, 単純にアイコンを変更をしただけです.
もし, 要望等がありましたらコメント頂ければと思っています.
自分の技術次第では改善をするつもりです.
アイコンはこちらからお借りいたしました.
艦これアイコンまとめ【フリーアイコン】 - Togetterまとめ
これからもよろしくお願いします.
以降も更新を続けることと, 艦娘のボイス(時報等)のアプリも作成していく予定です.
Version 0.0.1(C)
KanCollectActive-debug-version(c).apk - Google ドライブ
注意事項に関してはここと同じです.
アプリの途中経過 0x02 - 基本的にはAndroid
アプリの途中経過 0x02
一応, 完成しました.
はい. メインアクティビティに手こずらされました.
こんな感じとなっております.
ビューはこんな感じで, 画像リストでは長押しで削除する機能もついております.
ちなみに, Google Playとは違うため, 設定から[提供元不明のアプリ]を承認させてからインストールをしてください.
Android 2.3(IS11PT), Android 4.0.4(IS11S), Android Emulator x86は動作確認済み.
注意事項としては, ファイル操作をしているためストレージを埋め尽くす可能性があります.
エラー処理等はしてありますが, もしもの場合がありますのでご注意ください.
何かがおかしいと思いましたら, アプリを強制終了または端末の電源を強制的に落としてください.
致命的なエラー等は確認できておりませんが, もしエラー等が見つかった場合はお知らせください.
インストールは個人の責任でおねがいします.
それでもよろしい場合は, 下記のリンクからダウンロードできます.
KanCollectActive-debug.apk - Google ドライブ
アプリの途中経過 0x01
アプリの途中経過です.
未だにメインアクティビティのデザインは完成しておりません...
Android端末の画面などの関係で少々手間取っています.
今回は深海棲艦をデバッグモードとして追加しました.
デバッグと言ってもリストに追加されていないコードを入力して実行するものですが.
コード一覧からアイテムをロングクリックして
設定のDebug URLに入れて実行すると
深海棲艦のキャラクターが追加されるというものです.
あとはリスト上に艦娘の名前が表示されるようになったのと, swfファイルのダウンロード等のエラー処理を追加してダウンロードを正確にするようにしました.
メインアクティビティが製作できたらベータ版としてアプリをアップロードしたいと思っています.
zlib for Android
zlib の使い方
ZLIBの使い方は上記のリンクを読めばだいたいわかるであると思う.
サンプルコードも公開されている.
ZLIBはAndroid NDKでコンパイルしなくても使いえるライブラリであり, Javaのファイル操作でも使用が可能.
NDKをビルドするときは下記のものをAndroid.mkに追加する.
LOCAL_LDLIBS:= -llog -lz
今回作成しているアプリでは, 下のコードを使用している.
swfの解凍と, alpha値の解凍.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <zlib.h> #include <assert.h> #include <android/log.h> #include <jni.h> #define BUFFER_SIZE (4096) int zlib_inflate(FILE *in, const char *output) { z_stream z; unsigned char in_buf[BUFFER_SIZE]; unsigned char out_buf[BUFFER_SIZE]; int err = 0; int flush = Z_NO_FLUSH, ret = 0; unsigned long int f_len = 0; FILE *out; if((out = fopen(output, "w")) == NULL) { return EOF; } z.zalloc = Z_NULL; z.zfree = Z_NULL; z.opaque = Z_NULL; err = inflateInit(&z); if(err != Z_OK) { perror("inflateInit()"); return EOF; } for(;;) { z.avail_in = fread(in_buf, sizeof(unsigned char), BUFFER_SIZE, in); if(z.avail_in == 0) break; if(feof(in) != 0) flush = Z_STREAM_END; z.next_in = in_buf; for(;;) { z.next_out = out_buf; z.avail_out = BUFFER_SIZE; ret = inflate(&z, Z_NO_FLUSH); assert(ret != Z_STREAM_ERROR); switch(ret) { case Z_STREAM_ERROR: case Z_NEED_DICT: case Z_MEM_ERROR: case Z_DATA_ERROR: break; } f_len = sizeof(out_buf) - z.avail_out; fwrite(out_buf, sizeof(unsigned char), f_len, out); if(z.avail_out != 0) break; if(ret == Z_STREAM_END) break; } if(ret == Z_STREAM_END) break; } fclose(out); inflateEnd(&z); return 1; }
アプリの途中経過 0x00
アプリとしては, 現在ではNDKによるダウンロード, SWF解析, 画像の抽出および変換が完了しています.
こんな感じで
あとはレイアウトとか完成をさせるつもりです.
もちろん, 一括ダウンロードとかの処理はつけませんよ.
NDKのエラー処理とかもしなければ...