|1/5ページ | 次の20件 >>

2011年10月1日

起動時チェック

さて
コミケビュワーアプリですが

起動時に
SDカードとか
本家カタロムから
コピーしないといけない
必要ファイルの警告メッセージを
出す様にしましたぁ〜

コピーし忘れとか
説明を読まない人ようww
(自分も何か有ってから説明書読むタイプなんでww)

コンナ感じですなぁ〜〜
cmkvw027

cmkvw028

ただ、メッセージだけなので
その後の操作で制御は掛けてません

まあ、MAPファイルとか無くても
カタログとかは動く事は動くからねぇ〜

DBファイルは無いと厳しいので制御入ってますがww
さてマーケット公開
ドウシヨウカナぁ〜〜

投稿者:秀at 00:16 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月30日

画面の向きが変わったとき

画面の向きが変わったときに
画面が破棄されて
onCreateが再度実行されて
たまに落っこちてたので
画面の向きを縦に固定していた

っで
AndroidManifest.xmlで
android:configChanges="orientation|keyboardHidden"
を追加すれば
再スタートは無くなるですね

コンナ感じで記述(取敢えずカタログ画面のみ)
<activity android:name=".CatalogActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
</activity>

ふむ、
寝転がったりして操作してると
コロコロ向きが変わるので
操作し難いかぁ??

画面はコンナ感じ
cmkvw029

投稿者:秀at 00:07 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月27日

コミケビュワーicon

さて
コミケビュワーのアイコン出来ましたぁ〜

タブレットが今無いのでマウスで
マスクかけつつ色付けぇ〜
ま〜大昔マルチペイントで
鍛えたから大まかな色ならマウスでOKだねぇ〜

まあ御覧の様にかなり小さくなりますがぁww
cmkvw025

勿体無いので内部の裏表示でも使いましたぁ〜w
こっちの方が表示は大きいです
cmkvw026

ふむ
あとは、起動した時に
SDカード準備できて無いぞ
とか
必要なカタログからのファイル無いぞ
など
メッセージ出す様にするかなぁ〜〜

投稿者:秀at 00:10 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月24日

処理待ち表示

コミケビュワーアプリの
遅そうな箇所に処理待ち表示を仕込んでみた

こんな感じですねぇ〜

cmkvw023
cmkvw024

あと検索画面に
開催日とジャンルのスピナーを追加ぁ

さて次はアイコンのデザインかぁ〜〜

投稿者:秀at 03:02 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月22日

icon作ってみたぁ

ふむ
アプリのアイコンが
標準のままだったんで作ってみた

透過PNGで作らないと行けなかったので
Pixiaと透過PNGのDLLも
落としてきてチマチマ作成ぃ

久々の画像ソフトだったが
昔フォトショップでイラスト書いていたので
ま〜そこら辺は、
やりたい機能探すのに手間取った位で何とかなったぁ
が、Pix形式で保存すると
ベースレイヤーの縦横サイズが大きくなるのななぜだ?ww
まぁその他レイヤーは大丈夫なので
開きなおしたらサイズ変更すればいいのだが
もしかして、その他レイヤーの、
はみ出してる部分も含めて広げてるのか?

ま〜ソンナこんなで

iconはコンナ感じぃ
android022

まぁ〜文字だけなアイコンですねww

さてさてマーケットに公開するか悩んでる
のであるぅ〜〜〜

投稿者:秀at 00:11 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月20日

文字コード変換

ふむ
SQLiteデータのVerUPアプリで
Ver3DB作成時ロジックを
JNIで処理する様にしましたぁ

っで
文字コード変換も入れたかったのですが
AndroidのJNIではiconvが標準で無かったので
Javaでコード変換しましたぁ

処理結果は

09-19 14:31:06.793: INFO/DB_dump(281): 11926ms
09-19 14:31:13.093: INFO/dump_u(281): 6265ms
09-19 14:32:23.833: INFO/DB_read(281): 70709ms

09-19 14:33:34.433: INFO/DB_dump(281): 11992ms
09-19 14:33:39.873: INFO/dump_u(281): 5410ms
09-19 14:34:46.943: INFO/DB_read(281): 67030ms

09-19 14:35:44.533: INFO/DB_dump(281): 11309ms
09-19 14:35:49.822: INFO/dump_u(281): 5254ms
09-19 14:36:57.545: INFO/DB_read(281): 67694ms

dump_uが、コード変換なんだけど
10MB強が6秒弱かぁ
まあまあかな?

android021

っで
文字コード変換の有無チェックボックスを設けてみました

これで略完成かなぁ〜

投稿者:秀at 00:44 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月19日

resetじゃなくfinalizeなのかぁ

ふむ
先日のJNIでSQLietを使って
ダンプを取込む処理で落ちてた件が解決しましたぁ

まぁ〜原因はメモリーリークかなぁ

まあ、そう思ってSQL(SQLステートメント(st))使った後に
リセット(sqlite3_reset)してみた
こんな感じ

rc = sqlite3_prepare_v2(db, fs1, -1, &st, NULL);
rc = sqlite3_step(st);
sqlite3_reset(st);

だがエラーが出る(^^;)

それで
DB閉じる前にやっていた
ファイナライズ(sqlite3_finalize)を
リセットの場所に入れてみた

sqlite3_finalize(st);

ハイ落ちなくなりましたww
ふむ

勘違いだったのは
sqlite3_resetはSQLを
再実行出来る様にする為で
あって
確保したメモリー領域を再利用する訳じゃないのね

なのでsqlite3_finalizeで解放しないと
永遠とメモリーに放置されるのねぇ(^^;)

まあ
SQL再利用しない場合は

sqlite3_prepare_v2
sqlite3_step
sqlite3_finalize

の3点セットで行わないと
メモリーにゴミが溜まるのねぇ〜
はい勉強になりましたw

あぁ〜あと実行結果は
(3回計測)

09-18 17:57:32.465: INFO/DB_v2dump(11610): 9233ms
09-18 17:58:13.805: INFO/DB_v3reload(11610): 41339ms

09-18 17:59:08.895: INFO/DB_v2dump(11610): 9234ms
09-18 17:59:47.177: INFO/DB_v3reload(11610): 38280ms

09-18 18:01:47.805: INFO/DB_v2dump(11610): 8554ms
09-18 18:02:26.456: INFO/DB_v3reload(11610): 38653ms

速いなぁw
40秒弱かぁ
Javaでは100秒弱だったし
約半分かぁ〜

ただ
DBのVerUPだけなら、このままで正しいのだが
文字コードが元のままで
「SJIS」から「UTF-8」に変換掛けてないので、
その処理入れないとAndroidでは
漢字とか文字化けするのよねぇ〜

さて本番ロジックに取込む前に
そこら辺もテストロジックで組んでみるかなぁ〜〜


投稿者:秀at 03:45 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月17日

元々DBがandroid産だと

ふむ(^^;)
本家DBをDBverUPアプリでコンバートした後
そのDBをコミケアプリで読込んで
サークル画面開こうとしたら落ちたw

調べて見ると
DBがandroidで作成されていると
DatabaseHelperのonCreateを通らないのねぇ〜〜
なのでチェックリスト用の
テーブルが作成されないのね〜〜

まあ、ちょろっと変更かけて直りましたがぁww

さてコレでコミケカタログCD−ROMから
SDカードにデータコピれば
スマホだけで動かせる様になったねぇ〜

作成目標の冬コミまで余裕だったなぁwwww

投稿者:秀at 12:51 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

今更ながらぁプログレス

ふむ今更ながらだがロジックに
プログレスダイヤログ(ProgressDialog)を仕込んでみる

表示されないぃ・・・
と言うより処理の最後に一気に表示されてる??

色々調べてみると朧だが解ってきた
まだ完全に理解した訳じゃないので曖昧だが。。。

androidはメインスレッドだけが
画面更新できる見たいですね

なのでボタン押した時の処理等に
まとめてダイヤログ表示処理と
重い処理を一緒にすると
重い処理が終わるまで
メインスレッドに処理が返って来ないので
処理の最後に一気に表示されている様な形になるのかな多分

そこで
重い処理を別スレッド(以降「Sスレッド」)にして
マルチスレッド化して
メインスレッドにすぐ処理が戻る様にしました。
(今回はRunnableとThreadを使いましたが
AsyncTaskってのも有るみたいだね)

っで
SスレッドからHandlerのpostを使って
メインスレッドへ画面更新等をする感じですねぇ

例として下記の処理で

mHandler.post(new Runnable() {
public void run() {
waitDialog.setMessage("Ver3一時DBの作成中");

Toast.makeText(jp.or.sqliteDBverup.SqliteDBverupActivity.this,
"一時DB作成中です", Toast.LENGTH_LONG).show();

tv.setText("一時DB作成中です。");
}
});

以下の様な画面更新を、しています。

android020

あぁ〜画像には無いですが
一時ポップメッセージも表示してます

ふむ
もう少し簡単に画面更新だけでも
出来ると楽なんだがぁ
AsyncTaskも調べてみるかぁ

投稿者:秀at 08:55 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月15日

高負荷で落ちるねぇ

さてさて

SQLiteのダンプ取込みをJNIで組みましたぁ

まあ、シンプルな構造です
小さなダンプだと問題ありませんw

ただ。。。
レコード数が多いと以下のログを吐出します。。。
----------------------------------------
09-15 08:53:04.163: INFO/ActivityManager(59): Low Memory: No more background processes.
09-15 08:53:08.922: INFO/ActivityManager(59): Process jp.co.omronsoft.openwnn (pid 1080) has died.
09-15 08:53:08.942: WARN/ActivityManager(59): Scheduling restart of crashed service jp.co.omronsoft.openwnn/.OpenWnnJAJP in 5000ms
09-15 08:53:08.942: INFO/ActivityManager(59): Low Memory: No more background processes.
09-15 08:53:11.753: INFO/ActivityManager(59): Process jp.or.test02a (pid 1362) has died.
09-15 08:53:11.913: INFO/ActivityManager(59): Start proc com.android.launcher for activity com.android.launcher/com.android.launcher2.Launcher: pid=1535 uid=10025 gids={}
09-15 08:53:11.913: INFO/ActivityManager(59): Low Memory: No more background processes.
----------------------------------------

そう「Low Memory: No more background processes.」
悲鳴を上げてますね(^^;)

トランザクションでメモリー食ってるのかなぁ
また調べモノがぁ増えたぁ


一応、繰返しロジックはこんな感じ

sqlite3 *db;
int rc = sqlite3_open("/sdcard/cmkdata/test_3.DB", &db);
sqlite3_stmt *st;

strcpy(fs1,"");


while ( fgets(fs,n,fp)!= NULL){

ct++;

strcat( fs1, fs );


ret = strrchr( fs1,';');
if(ret != NULL){


if((strlen( fs1 ) - 2) == (ret - fs1)){


rc = sqlite3_prepare(db, fs1, -1, &st, NULL);

rc = sqlite3_step(st);




strcpy(fs1,"");

}


}



}


sprintf(pszRet,"%ld",ct);

sqlite3_finalize(st);

sqlite3_close(db);


シンプルすぎるのかなぁwww

投稿者:秀at 18:49 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

参照メンバ名は同じゃなかったw

ふむ
SQLiteのVer2とVer3のメンバー名同じジャナカッタww
DBオープンもsqlite3_openとsqlite_openだったww
思い込みは怖いねww


まあ、それはそれとして

Javaで個別のJNIライブラリ読込みについて

結果は、こんな感じ
android019
出来たね〜〜


別々にJNIライブラリを作成して
Java側から参照する様にしてます。


少し端折りますが

ライブラリTest02jniでは
sqlite.h(Ver2用)を参照(include)します。

ライブラリTest02v3jniでは
sqlite3.h(Ver3用)を参照(include)します。


個々で別々のメンバ作成します。
今回は「stringFromJNI」(Ver2側)と
「sqliteDBv3」(Ver3側)ですね。

jniフォルダーに個別フォルダーを作ってAndroid.mkを作ります。
何でも良いのですが
今回はTest02フォルダーとTest02v3フォルダーですね。

jniフォルダーにも配下ホルダーを参照する
Android.mkを作ります。
中身は「include $(call all-subdir-makefiles)」だけです。

NDKでビルド(ndk-build)してライブラリを作ります。

あとは、Java側(Activity)で
Test02jniとTest02v3jniの
ライブラリを参照します。

static {
System.loadLibrary("Test02jni");
System.loadLibrary("Test02v3jni");
}
だね

あとはJavaで
個々のメンバ名を参照で
「stringFromJNI」とか
「sqliteDBv3」とか使えば良いですね

ふむぅ(^^;)無理やりポイ感じがぁww
何とか成る事は、なったかぁ・・・

ま〜ダンプ取込んでVer3DB作成する
ロジックをテストで組んで見るかぁ〜〜〜

投稿者:秀at 00:08 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月14日

トランザクションの効果

ふむ

ダンプファイルを読込んで
DB作成するSQL処理に
トランザクションしてみた。

有無の結果
(各3回計測)

トランザクションあり

09-13 23:10:35.532: INFO/DB_Create(16332): 97438ms
09-13 23:10:35.532: INFO/DB_SQL(16332): 47289 COUNT
09-13 23:10:35.553: INFO/out_DB(16332): aa.DB

09-13 23:13:10.142: INFO/DB_Create(16332): 98947ms
09-13 23:13:10.142: INFO/DB_SQL(16332): 47289 COUNT
09-13 23:13:10.192: INFO/out_DB(16332): aa.DB

09-13 23:15:31.922: INFO/DB_Create(16332): 100513ms
09-13 23:15:31.922: INFO/DB_SQL(16332): 47289 COUNT
09-13 23:15:31.942: INFO/out_DB(16332): aa.DB

トランザクションなし

09-13 23:23:15.762: INFO/DB_Create(20289): 303476ms
09-13 23:23:15.762: INFO/DB_SQL(20289): 47289 COUNT
09-13 23:23:15.792: INFO/out_DB(20289): aa.DB

09-13 23:29:19.762: INFO/DB_Create(20289): 308013ms
09-13 23:29:19.762: INFO/DB_SQL(20289): 47289 COUNT
09-13 23:29:19.782: INFO/out_DB(20289): aa.DB

09-13 23:34:59.752: INFO/DB_Create(20289): 306070ms
09-13 23:34:59.752: INFO/DB_SQL(20289): 47289 COUNT
09-13 23:34:59.773: INFO/out_DB(20289): aa.DB


47,289レコードで有り無しで3倍違うかぁw
トランザクションは「赤い彗星」だねぇw

まあ、計測時間はダンプファイルの読込み時間も含んでいるので
純粋なSQL実行時間では無いのだがぁ

ファイル読込み時間は、トラン有り無しで
同じだろうから、もっと差が有るはずだねぇ〜〜

あと一応、元DBからのダンプ作成時間は

JNIでのダンプ処理の結果

09-13 23:42:05.072: INFO/DB_dump(27903): 10238ms

09-13 23:46:06.432: INFO/DB_dump(27903): 9686ms

09-13 23:48:21.872: INFO/DB_dump(27903): 9312ms

・・・速いなぁ
こちらは「連邦の白いヤツ」かぁw
まあ書出しダケ何で、、、
とは言え元DB読んでダンプ吐出してるわけだし
変わらんのかぁ。。。

ふむぅ〜
Ver3DB作成もJNI化を考えるかぁ〜
もっと早くなるかなぁ?

まだ思いつきだが
参照メンバーが同じ問題は
(sqlite_openなど)
Ver2のライブラリ参照でダンプ作成

Ver3のライブラリ参照でDB作成

別々のライブラリ作成しておいて

Java側からJNIライブラリを指定する再に両方参照すればOKかなぁ?
ぼちぼちとテストロジック組んで試してみるかぁ〜〜w

投稿者:秀at 09:53 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月13日

とりあえず出来たねぇ

ふむ

Android単体で
SQLiteデータVer2からVer3へのUPdata一応出来たねぇ〜

画面はコンナ感じ
android018
まぁ〜シンプルですね(^^;)

Ver2ダンプからテーブルをクリエート(createのSQL発行)する際に
項目で内容コメント付けている場合は
(こんな時ね「comiketNo INTEGER not null,-- コミケ番号」)
項目ごとの間に"¥n"を入れないと落ちました(^^;)
ま〜仕様なのねw本家ダンプでも入ってるしぃ〜

まぁlogってSQLみました
android016

出来上がったDBをWinで見てみる
android017
一部で文字化けってますねぇw

「VALUES('en_US')」に成ってますからねぇ〜〜
まあAndroidは「UTF-8」なんで、あたりまえかぁ〜〜

「br = new BufferedReader(new InputStreamReader(file_tmp,"SJIS"));」
って、やってるので
元の状態が変化してますが
AndroidでDB使う前提なので、いいっかw

駄目な時は中間ダンプファイル作ってるので
それで他の環境で生成する事も出来るしぃ

しかしダンプ出すときはJNIで作ってるので速いですが
ダンプから取込みはJavaでSQL発行なので劇遅wwww
3万5千レコード以上だからねぇ(^^;)
ま〜トランザクションも使ってなんでまあぁ〜〜ねw

取込みもJNIで、やれば良いんだろうけど
SQLiteのVer2Ver3ライブラリで
同じメンバなどが有るのよ
(sqlite_openなど)
ライブラリ指定してメンバ使えたっけぇ

ちょろちょろ調べてみますかぁ〜〜
取敢えずトランザクション使って結果みるかぁ〜
何処まで改善っするかなぁ〜

投稿者:秀at 19:59 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月11日

権限チェックしてたのねぇ

SQLiteコンバートのテストロジックから
本番ロジックにコピーって
実行してみたら通らなかったぁorz

色々やってみたが
androidのマニフェストで
SDカード許可アクセス出さないとダメだったw
チェックして無いと思ってたんだがぁアマッカッタw

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

テストで色々試行錯誤した際に残してたの忘れてた(^^;)

投稿者:秀at 23:36 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月10日

SQLiteのダンプぅ

ふむ

SQLiteのVer2コードがJNIで動くようになったので
コンバートに必要なデータを作るコーディングに取り掛かりました。

SQLで吐いてゴリゴリやろうかと思ったのだが
もともとコマンドラインでダンプ出す機能(.dump)が有るので
ちとshell.cの中身を解析ぃ

ちょいちょいコード拝借してコーディングして
エラー&トライを繰り返しましたぁ
ま、こちらもSELECT文で吐出して
編集してるのね(^^;)

結果は
android015

ハイ出来ましたぁw

難所は
ポインタ構造体の所で、
よく引っかかりましたがぁ(^^;)

アセンブラの方がポインタ素直でスキwww

8〜9年ぶりC言語のリハビリには
ちょうどヨカッタかなぁw

あぁ〜コマンドラインが懐かしいぃ〜

JNIを使ってみて
昔(高校まで)X1turboでプログラムしてた頃の
Basic&アセンブラ(16進コード)で
組んだモノを連想したねぇ〜

雑誌ではOh!Xとかベーマガぁw(解る人は少ないかw)

あの頃も、どうしょうも無い所は、
アセンブラに任せる感じだったからね

まぁ〜〜
プログラムって多言語の複合技で、
やれないと駄目なんだけどねぇwww

今は情報も溢れてるし
いい時代に、なったものだぁ〜〜なぁ〜〜〜

投稿者:秀at 07:11 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月9日

やぁ〜〜〜っとぉw

うむ
DBファイル指定で、やっと動いたおぉ!!

何したかと言うと
SQLiteのOS識別での設定で
一時領域を確保してるんだけど
"/var/tmp"
"/usr/tmp"
"/tmp"
コレ/mntには有りませんねぇ
しかも/mntに勝手にフォルダーなんぞ作れません。。。
だからSDカード上に
"/sdcard/test/var/tmp"
"/sdcard/test/usr/tmp"
"/sdcard/test/tmp"
って作ってみました

っでコードを
android012
に、しましたぁ

ハイ実行ぉ
android013
通ったときの「DB_ok」メッセージ
エミュレータに返ってきましたねw

っで、DBのファイルサイズは
android014
増えてますねぇw

ふいぃ〜〜〜〜〜
SQLiteのコード半分くらい読んだかもぉ(^^;)

でも、もとのコードは余り改変したくは無いのだがぁ。。。
jniで基礎ディレクトリ/mntから変えれ無いのかなぁ??
ちょっと調べてみるかぁ〜〜〜

さてスッキリしたwww
気になって熟睡できなかったのでヨカッタおw

投稿者:秀at 03:21 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

OSの認識がぁ

さて
Cコードず〜〜〜っと眺めてると
OS識別かなぁ〜〜っと

実際に何返って来るかやってみる

結果
android009

ふむ"UNIX"だねぇ〜〜

ここの判定ロジックかぁ
android010

って事は、この設定かぁんなぁ
android011

さてさてコレどうすれば良いか
コード追うかぁ・・・

でもファイル名を「:memory:」にしても"UNIX"なんだがぁ
エラー来ないんだよね?w

投稿者:秀at 00:32 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月8日

やっぱ駄目かぁ。。。

ふむ
sqlite_openのポインタ返ってこないねぇ
0 が返ってくる

ま、エラーメッセージを排てるしね。。。

ちなみにDBファイルを":memory:"にして
一時的にメモリー上に作成すると
テーブル作成SQL(sqlite_exec)も通るし
sqlite_closeも通る・・・

さて何だろかぁ。。。
さっぱり解らん、一時的な作業領域かぁ?

エラー返してくる
コード部分をバッサリ消すか!?
(-д-)それは駄目だろw

ちなみにVer3も同じ様に1個のライブラリ化して
試したが此方は動くのねぇw

ふむぅ、、、

投稿者:秀at 05:31 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

もしかしてぇ。。。

ソースコード読んでも何でか解らんかったので
いろいろやってみた
環境設定かなぁ〜っとputenv試したり・・・
格納場所変えてみたり・・・
またソース読んでみたりぃ・・・

ディレクトリのパーミッション系かなぁ〜っと
DDMSのファイルエクスプローラー眺めていると
あれ?DBファイル出来てるじゃん。。。

Cコード
android008

DBファイル(DDMS)
android007

作成時間が現在時間とズレていたので今まで気付かなかったぁ
Androidエミュレータの時間なのねぇ orz
国際標準時間かぁ?

まあ、DBファイルが出来たって事は
DB掴んでるのかなぁ?
あのエラーメッセージは何ぃ???

ふむ、何かinsertしてみてselectしてみるかぁ・・・


投稿者:秀at 04:27 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

2011年9月7日

メモリー上はOKぇ?

一応、DB名を":memory:"にすると
メモリー上に一時的DB展開出来るみたいなので
やってみた

sqlite *db;
db = sqlite_open(":memory:",0666, &sqliteerror);

android006

エラー返ってこないので出来たのかな?

ふむ、ファイル関係かぁ・・・

でも試しにCコードでfopenを使って
ファイル作ってみたけど普通に出来たんだがぁ。。。
さて何だろかぁ?



投稿者:秀at 05:29 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)

|1/5ページ | 次の20件 >>

▲このページのトップへ