画面の向きが変わったとき
画面の向きが変わったときに
画面が破棄されて
onCreateが再度実行されて
たまに落っこちてたので
画面の向きを縦に固定していた
っで
AndroidManifest.xmlで
android:configChanges="orientation|keyboardHidden"
を追加すれば
再スタートは無くなるですね
コンナ感じで記述(取敢えずカタログ画面のみ)
<activity android:name=".CatalogActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
</activity>
ふむ、
寝転がったりして操作してると
コロコロ向きが変わるので
操作し難いかぁ??
画面はコンナ感じ
投稿者:秀at 00:07
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
公僕天下だねぇ〜
ふむ、参院予算委員会で
「(NHK社員の)平均給与は1041万円、
国家公務員の保険料の基礎となる平均給与は658万円」
らしいが
どっちも公僕さま、ですよねぇ〜
NHKは受信料(テレビ有るだけで取れる)
国家公務員は税金だよねぇ
ここ十数年は
国が赤字経営なんだよねぇ
民間は不景気なんだよねぇ
そこの所どうなのよぉ?
P.S.
ちなみに民間は
-----------------------------------------
平成22年分
民間給与実態統計調査
−調査結果報告−
平成23年9月
国税庁 長官官房 企画課
「給与所得者数は、4,552万人(対前年比1.0%増、46万人の増加)で、その平均給与は412万円(同1.5%増、61千円の増加)となっている。」
-----------------------------------------
だそうだ
ソースは
ここ
それでも集計結果が実態より高い気はするがwww
投稿者:秀at 07:59
| つぶやき
| コメント(0)
| トラックバック(0)
ある意味すごいね
旅客機って背面飛行出来るんだぁ。。。
投稿者:秀at 20:03
| つぶやき
| コメント(0)
| トラックバック(0)
けっこう出してきたねぇ
ふむ
au秋モデルのスマホ結構出してきたね〜
6機種かぁ〜
内4機種がWiMAX対応とは
良い傾向だねぇ〜〜w
まぁ〜
自分は夏にG'zOneスマホにしたので
再来年まで変える気はないがぁw
携帯は壊れないのが一番だと思ってるから
初代G'zOneから使ってますね〜
壊れたことは無いなぁ〜〜
まあ、走行中のバイクとかから落とせば壊れる
だろうけどスノボ位じゃ壊れませんでしたw
ふむ2年弱でG'zにWiMAX2載らないかなぁ〜〜
投稿者:秀at 19:12
| つぶやき
| コメント(0)
| トラックバック(0)
コミケビュワーicon
さて
コミケビュワーのアイコン出来ましたぁ〜
タブレットが今無いのでマウスで
マスクかけつつ色付けぇ〜
ま〜大昔マルチペイントで
鍛えたから大まかな色ならマウスでOKだねぇ〜
まあ御覧の様にかなり小さくなりますがぁww
勿体無いので内部の裏表示でも使いましたぁ〜w
こっちの方が表示は大きいです
ふむ
あとは、起動した時に
SDカード準備できて無いぞ
とか
必要なカタログからのファイル無いぞ
など
メッセージ出す様にするかなぁ〜〜
投稿者:秀at 00:10
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
ブローバンドルーター選び
さて
ネットワーク環境変えるにあたって
ルーター新調するのだが
以前「WZR-HP-G450H」に
しようかと言っていたが
メーカーのダイナミックDNS有料なのね。。。
で、知合いからNEC製が
良いんで無いかと言われたので
「WR8700N」が候補に、でもDDNSは有料なのよねぇ
(ま〜昔に自分も知合いにNEC製を薦めたのだが(^^;))
メーカーで無料DDNSやってる
I-O DATAが有る
一応「WN-G300DGR」が候補かなぁ
ルーターのグローバルアドレス変わったら
自動でDDNSを更新してくれるみたい
ただ。。。
スループットがNATアクセラレータ使うと
スループット最大880Mbps(PPPoE実測値)だが
NATアクセラレータ使うと
IPv6パススルー機能が使えないと言う罠がwww
NATアクセラレータ使わないと
スループット100チョットしか出ないみたい
さて三者三様どれを、選んだモノかぁ。。。
投稿者:秀at 07:19
| つぶやき
| コメント(0)
| トラックバック(0)
iconイラスト
コミケビュワーのアイコン作るのに
文字だけだと味気ないので
キャラ入れてみることにしたぁ
久々にイラスト描いたなぁ〜
何年ぶりだ?7〜8年かぁ?w
一応2個描いたけど、まあ最初の方が出来良いかなぁ
結構小さくなるので
デェフォルメ気味に瞳は大きめですなぁ〜
ふむ
Gペン用意するのも面倒だったので
ボールペンでペン入れぇ(^^;)
さて色入れして加工するかなぁ〜
投稿者:秀at 23:12
| つぶやき
| コメント(0)
| トラックバック(0)
処理待ち表示
コミケビュワーアプリの
遅そうな箇所に処理待ち表示を仕込んでみた
こんな感じですねぇ〜
あと検索画面に
開催日とジャンルのスピナーを追加ぁ
さて次はアイコンのデザインかぁ〜〜
投稿者:秀at 03:02
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
フレッツの仕様いろいろ
ふむ
光ネクストについて
知合いに調べて貰っているが
一応自分でも調べていたら
古そうなのだがコンナものが
------------------------------------
技術参考資料
IP 通信網サービスのインタフェース
― フレッツシリーズ ―
<光ネクスト編>
第1.0 版
2008.3.31
西日本電信電話株式会社
本資料の内容は、機能追加等により追加・変更されることがあります。
------------------------------------
物理層がIEEE 802.3-2005 100BASE-TXまでに成ってますがw
資料は
ここ
っで、さらに調べていると
東の資料だが
------------------------------------
IP通信網サービスのインターフェイス
フレッツシリーズ
------------------------------------
って、のも発見〜
比較的新しい?
こちらは物理層が
IEEE 802.3-2005 1000BASE-Tになってました
資料は
ここ
あとコンナのも
-------------------------------------
NGN IPv6 ISP 接続
<トンネル方式>
UNI 仕様書
―5.1 版―
2010 年7 月
NTT 東日本
NTT 西日本
-------------------------------------
資料は
ここ
コンナのもw
--------------------------------------
開発者のためのNGNインタフェース仕様ご紹介
--------------------------------------
資料は
ここ
まあ、コンナとこかね
あぁ〜
RS232Cでモデムつないで2400ボー(変復調速度の単位)とか言ってた頃が懐かしいぃ
投稿者:秀at 05:10
| 趣味
| コメント(0)
| トラックバック(0)
光プレミアムからネクストへ
久しぶりに
NTT西日本のページを覗いていたら
「フレッツ 光ネクスト/フレッツ・光プレミアム/Bフレッツ
移行(品目変更)工事費割引」の文字が目に入ったので
確認してみると
「フレッツ・光プレミアム
ファミリータイプ」
から
「フレッツ 光ネクスト
ファミリー・ハイスピードタイプ」
への「移行(品目変更)工事費割引」で
適用時の移行工事費が
5,500円(税込5,775円)に、なっていた。
本来だと10,800円かかるので半額かな?
っで、申し込みしてみたのだが
どうもネクストでは
光電話付けないと
ONU機能だけの機器になるらしく
電話窓口のお姉さまから
光電話を申込みを進められたのだ
プレミアムでは
ONUとCTU(コレがルーター代わり)
構成だったので寝耳に水だったので
その場で光電話込みで申込む事にしたが。
よくよく考えると
固定電話は別に有り
停電など非常時の事も考えると
普通回線なら
電話線から電気来るので電話出来るのよ
光電話だと機械(ルーター)止まるとアウトだしね
別途基本料の月付き500円かかるしね
っで、契約名義と請求名義が別々で
申込みも中途半端に成って居たので
再度連絡する機会が有ったので
光電話は契約しない事にした。
まあ、
機能が豊富なルーター新規で購入決定ぇ(^^;)
光ネクスト対応うたっている
「Air Station WZR-HP-G450H」を
購入しちゃおうかと
スループットも400くらい有るらしいのでぇ
お姉さまの説明がアバウトかつ
此方の言ってる用語の半分が伝わったかどうか
怪しいがww
お姉さま曰く
「光電話を申込まないと
ルーター機能を持たない機械なのでPCが1台しか繋げません」
とのことでした
多分NTTのFHHTだと経験上PPPoEで繋ぐんだろう
っで、質問で
「PPPoEの機能持ったルーターを
自前で用意すれば良いですか?」
お姉さまの回答
「お手持ちのルーターを繋いでください」
自分
「・・・はい、解りましたぁ」
まあ、これ以上は突っ込んでも
仕方ないので切り上げww
さてさて確証が薄いので
知合いから裏取ってから
ルーター注文するかなぁ〜〜
投稿者:秀at 18:40
| 日記
| コメント(0)
| トラックバック(0)
スマホの外部ワンセグ選択肢増えたね
「SoftBank SELECTION、ワイヤレスでワンセグ視聴・録画ができる
iPhone/iPad/Android? 対応「TVチューナー」を発売」
9/30に出るみたいね
コレも候補ですかねぇ〜
様子見ですねぇ〜
でもソフトバンクが、チト引っかかるw
投稿者:秀at 01:07
| つぶやき
| コメント(0)
| トラックバック(0)
icon作ってみたぁ
ふむ
アプリのアイコンが
標準のままだったんで作ってみた
透過PNGで作らないと行けなかったので
Pixiaと透過PNGのDLLも
落としてきてチマチマ作成ぃ
久々の画像ソフトだったが
昔フォトショップでイラスト書いていたので
ま〜そこら辺は、
やりたい機能探すのに手間取った位で何とかなったぁ
が、Pix形式で保存すると
ベースレイヤーの縦横サイズが大きくなるのななぜだ?ww
まぁその他レイヤーは大丈夫なので
開きなおしたらサイズ変更すればいいのだが
もしかして、その他レイヤーの、
はみ出してる部分も含めて広げてるのか?
ま〜ソンナこんなで
iconはコンナ感じぃ
まぁ〜文字だけなアイコンですねww
さてさてマーケットに公開するか悩んでる
のであるぅ〜〜〜
投稿者:秀at 00:11
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
6ジョブ中5ジョブLv95
ふむ
Lv上げは
Lv95
赤ナ踊侍戦
残るは
Lv90
モ
だけかなぁ〜
まぁ〜
Lv上げたダケじゃ駄目なんだけどねw
スキル上げが時間要るんだよなぁ・・・
あ、サポのLv割れも解決しないとなぁ
ボチボチやるかぁ〜
投稿者:秀at 10:36
| FF11
| コメント(0)
| トラックバック(0)
限界Lv95
ふむ
試練のタイミングは
・・・・・・・。
・・・・・・・。
・・・・・・・。
・・・・・・・。
四つぶんなのかな?w
投稿者:秀at 04:37
| FF11
| コメント(0)
| トラックバック(0)
文字コード変換
ふむ
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秒弱かぁ
まあまあかな?
っで
文字コード変換の有無チェックボックスを設けてみました
これで略完成かなぁ〜
投稿者:秀at 00:44
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
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)
スマホでワンセグ
まあIS11CAは地デジの機能は付いていないのだが
iOS/Android端末対応の無線LANワンセグチューナが発売になる
「MeoTune」てのかぁ
そうIS11CAでもワンセグ見れるってか
Android2.2以降ならタブでもOKかぁ〜
携帯型ならPSPで見れるので
今すぐ必要では無いが
評判を見てから買うか考えてみるかな
投稿者:秀at 01:02
| つぶやき
| コメント(0)
| トラックバック(0)
相変わらずかぁ
久々にWiMAXのエリアを調べてみたら
あわら市が12月末に整備されるミタイダネ・・・
小松も範囲広がってるし・・・
って
おいおい、また取残されてますよw
またもや情報通信網の格差から脱出が出来ない
加賀市かよww
まぁ〜WiMAX2が始まる頃には
計画される事を祈るよ
スマホも既存通信網だけじゃ
採算合わんだろうしね〜〜
何らかの通信網使う様に成るだろうしぃ
あぁ〜
プレイステーションヴィータも
12/17出るのねぇ〜〜
暫くは様子見かなぁ〜〜
3G通信網じゃ通信コストかかり過ぎだろwww
まあ無線通信網規格は
世界基準からガラパゴス化しないで欲しいものだぁ
投稿者:秀at 01:09
| つぶやき
| コメント(0)
| トラックバック(0)
元々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作成中です。");
}
});
以下の様な画面更新を、しています。
あぁ〜画像には無いですが
一時ポップメッセージも表示してます
ふむ
もう少し簡単に画面更新だけでも
出来ると楽なんだがぁ
AsyncTaskも調べてみるかぁ
投稿者:秀at 08:55
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
あついぃ・・・
九月半ばなのに暑いねぇ
投稿者:秀at 21:43
| つぶやき
| コメント(0)
| トラックバック(0)
高負荷で落ちるねぇ
さてさて
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ライブラリ読込みについて
結果は、こんな感じ
出来たね〜〜
別々に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)
トランザクションの効果
ふむ
ダンプファイルを読込んで
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)
とりあえず出来たねぇ
ふむ
Android単体で
SQLiteデータVer2からVer3へのUPdata一応出来たねぇ〜
画面はコンナ感じ
まぁ〜シンプルですね(^^;)
Ver2ダンプからテーブルをクリエート(createのSQL発行)する際に
項目で内容コメント付けている場合は
(こんな時ね「comiketNo INTEGER not null,-- コミケ番号」)
項目ごとの間に"¥n"を入れないと落ちました(^^;)
ま〜仕様なのねw本家ダンプでも入ってるしぃ〜
まぁlogってSQLみました
出来上がったDBをWinで見てみる
一部で文字化けってますねぇ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)
権限チェックしてたのねぇ
SQLiteコンバートのテストロジックから
本番ロジックにコピーって
実行してみたら通らなかったぁorz
色々やってみたが
androidのマニフェストで
SDカード許可アクセス出さないとダメだったw
チェックして無いと思ってたんだがぁアマッカッタw
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
テストで色々試行錯誤した際に残してたの忘れてた(^^;)
投稿者:秀at 23:36
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
SQLiteのダンプぅ
ふむ
SQLiteのVer2コードがJNIで動くようになったので
コンバートに必要なデータを作るコーディングに取り掛かりました。
SQLで吐いてゴリゴリやろうかと思ったのだが
もともとコマンドラインでダンプ出す機能(.dump)が有るので
ちとshell.cの中身を解析ぃ
ちょいちょいコード拝借してコーディングして
エラー&トライを繰り返しましたぁ
ま、こちらもSELECT文で吐出して
編集してるのね(^^;)
結果は
ハイ出来ましたぁw
難所は
ポインタ構造体の所で、
よく引っかかりましたがぁ(^^;)
アセンブラの方がポインタ素直でスキwww
8〜9年ぶりC言語のリハビリには
ちょうどヨカッタかなぁw
あぁ〜コマンドラインが懐かしいぃ〜
JNIを使ってみて
昔(高校まで)X1turboでプログラムしてた頃の
Basic&アセンブラ(16進コード)で
組んだモノを連想したねぇ〜
雑誌ではOh!Xとかベーマガぁw(解る人は少ないかw)
あの頃も、どうしょうも無い所は、
アセンブラに任せる感じだったからね
まぁ〜〜
プログラムって多言語の複合技で、
やれないと駄目なんだけどねぇwww
今は情報も溢れてるし
いい時代に、なったものだぁ〜〜なぁ〜〜〜
投稿者:秀at 07:11
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
やぁ〜〜〜っとぉw
うむ
DBファイル指定で、やっと動いたおぉ!!
何したかと言うと
SQLiteのOS識別での設定で
一時領域を確保してるんだけど
"/var/tmp"
"/usr/tmp"
"/tmp"
コレ/mntには有りませんねぇ
しかも/mntに勝手にフォルダーなんぞ作れません。。。
だからSDカード上に
"/sdcard/test/var/tmp"
"/sdcard/test/usr/tmp"
"/sdcard/test/tmp"
って作ってみました
っでコードを
に、しましたぁ
ハイ実行ぉ
通ったときの「DB_ok」メッセージ
エミュレータに返ってきましたねw
っで、DBのファイルサイズは
増えてますねぇw
ふいぃ〜〜〜〜〜
SQLiteのコード半分くらい読んだかもぉ(^^;)
でも、もとのコードは余り改変したくは無いのだがぁ。。。
jniで基礎ディレクトリ/mntから変えれ無いのかなぁ??
ちょっと調べてみるかぁ〜〜〜
さてスッキリしたwww
気になって熟睡できなかったのでヨカッタおw
投稿者:秀at 03:21
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
OSの認識がぁ
さて
Cコードず〜〜〜っと眺めてると
OS識別かなぁ〜〜っと
実際に何返って来るかやってみる
結果
ふむ"UNIX"だねぇ〜〜
ここの判定ロジックかぁ
って事は、この設定かぁんなぁ
さてさてコレどうすれば良いか
コード追うかぁ・・・
でもファイル名を「:memory:」にしても"UNIX"なんだがぁ
エラー来ないんだよね?w
投稿者:秀at 00:32
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
やっぱ駄目かぁ。。。
ふむ
sqlite_openのポインタ返ってこないねぇ
0 が返ってくる
ま、エラーメッセージを排てるしね。。。
ちなみにDBファイルを":memory:"にして
一時的にメモリー上に作成すると
テーブル作成SQL(sqlite_exec)も通るし
sqlite_closeも通る・・・
さて何だろかぁ。。。
さっぱり解らん、一時的な作業領域かぁ?
エラー返してくる
コード部分をバッサリ消すか!?
(-д-)それは駄目だろw
ちなみにVer3も同じ様に1個のライブラリ化して
試したが此方は動くのねぇw
ふむぅ、、、
投稿者:秀at 05:31
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
もしかしてぇ。。。
ソースコード読んでも何でか解らんかったので
いろいろやってみた
環境設定かなぁ〜っとputenv試したり・・・
格納場所変えてみたり・・・
またソース読んでみたりぃ・・・
ディレクトリのパーミッション系かなぁ〜っと
DDMSのファイルエクスプローラー眺めていると
あれ?DBファイル出来てるじゃん。。。
Cコード
DBファイル(DDMS)
作成時間が現在時間とズレていたので今まで気付かなかったぁ
Androidエミュレータの時間なのねぇ orz
国際標準時間かぁ?
まあ、DBファイルが出来たって事は
DB掴んでるのかなぁ?
あのエラーメッセージは何ぃ???
ふむ、何かinsertしてみてselectしてみるかぁ・・・
投稿者:秀at 04:27
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
メモリー上はOKぇ?
一応、DB名を":memory:"にすると
メモリー上に一時的DB展開出来るみたいなので
やってみた
sqlite *db;
db = sqlite_open(":memory:",0666, &sqliteerror);
エラー返ってこないので出来たのかな?
ふむ、ファイル関係かぁ・・・
でも試しにCコードでfopenを使って
ファイル作ってみたけど普通に出来たんだがぁ。。。
さて何だろかぁ?
投稿者:秀at 05:29
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
すこし前進かぁ?
共用ライブラリに書き込むのは
実機でのrootも取らないと行けないので
本末転倒だし・・・
進展しないので違う方向からアプローチしてみた
SQLiteのコードを別にして2個ライブラリを作っていたのだが
参照出来ないのでは意味無いので1個にしました(^^;)
っで、実行してみたら
はい、DB open時のエラーが返ってきました
エラーが返ったってことは参照は出来たねぇ
ま、エラー内容ですが
「malformed database schema -unable to open a temporary database file for string temporary tables」
web翻訳で
「文字列の一時テーブルのための一時データベースファイルを開くためにスキーマができない不正な形式のデータベース」
らしいが・・・
調べてみると
書込みなど権限無いディレクトリ指定すると
返ってくるエラーみたいですねぇ・・・
目的は読めるだけで問題ないのだがぁ。。。
関係無いと思ったが
AndroidManifest.xml
でSDカードアクセスするとき記述する
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
は一応試した
関係無いと思ったのはVer3のテストで
記述しなくてもSDカードアクセス出来たから
って事は「SDアクセス承認メッセージ」も出ないのかぁ・・・。。。、、、
話が脱線しました
さてまた調べるかぁ。。。
投稿者:秀at 03:41
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
ここかも。。。
ふむ
ちと色々試している内に気になる現象が有ったので
SQLiteのビルドFile名をbilsqliteAしてみた・・・
system/bil以降にbilsqliteA.so無いじゃんかぁ
bilsqlite.soは有るがタイムスタンプが
「6/30」って書き換わって無いジャン
SQLite操作Cコード用のAndroid.mkはコンナのだから。。。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Test02jni
LOCAL_SRC_FILES := Test02jni.c
LOCAL_SHARED_LIBRARIES := libsqliteA
include $(BUILD_SHARED_LIBRARY)
これ
「LOCAL_SHARED_LIBRARIES」は
「モジュールが実行時に参照する共有ライブラリを指定」らしいので
参照モジュールねーーーんじゃね???
どうヂて、そう思うかと言うと
Cコードで、ただ文字を返すだけ記述にして
android.mkの参照ライブラリを
「libsqlite」と「libsqliteA」交互に変えたら
動いたり動かなかったりしたから。。。
多分Ver3が動いたのは
標準ライブラリに有る「libsqlite」がVer3だからかなぁ。。。
じゃあsystem/bil以降にライブラリ持って行けば??
と、思うのだが書込み不可なのですよ・・・
さてどう検証すっかなぁ。。。
投稿者:秀at 15:46
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
ますます・・・
sqlite.h側がopaque(不透過)型構造体だから
typedef struct sqlite sqlite;
sqlite *sqlite_open(const char *filename, int mode, char **errmsg);
void sqlite_close(sqlite *);
Cコーディングは
sqlite *db;
sqlite_open(dbfile,0666, sqliteerror);
sqlite_close(db);
って、なるのかぁ???ビルドは通る・・・
でもエミュレータで動かんなぁ。。。
投稿者:秀at 05:41
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
ドつぼったぁ
うむぅ
わっから〜〜ん(^^;)
DB開いて閉じてるだけなんだが
ビルド通るけどエミュレータ実行するとエラーになるぅ
Ver2は
PHPでの情報は多いけど
やはりAndroidでの情報は。。。
さてさて、ど〜〜〜う〜〜〜すっかぁw
投稿者:秀at 00:17
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
SQLite Vre2のソース
ふむ
SQLiteVer.2のCソースで
NDKのビルド通ってしまったよw
まあtclsqlite.cだけエラーったので外しましたがぁ・・・
TCLのインターフェースなので今回は要らんかなぁ〜〜っと
こんな感じぃ
あ、つなぐ用のTest02jni.c通ってますが
空ですw
っで
Test02jni.cにSQLite3用のコーディング
そのままパックって、
ちょこちょこ変更したけど駄目でしたwwww
インターフェイス自体根本的にVer2とVer3で違うんだよね(^^;)
ソース追うのメンドクサイなぁ(=д=;)
さてさて古いVer2資料がWedに残って居るのかなぁ。。。
まあ色々と勉強になるなぁ〜〜www
投稿者:秀at 03:28
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
SQLite3のCソース
ふむ
Wedで色々調べていたらJNIで
SQLite3をソースから動かしているモノを見つけた。
物は試しで少しアレンジしながらやってみました。
こんな感じ
取り合えず動く感じですねぇ
ま〜最初のレコードの最初の項目しか表示されてないのは
動くか確認だけなので
つなぐ所のCコード(Test03jni.c)が使いまわしの変更適当だからw
NDKでリビルドかけて直したら
Eclipseのエミュレータ実行時に反映されなくて少し悩んだw
どうもNDK関連が非同期になってるみたいで
Javaソースいじって同期かけると反映される(^^;)
まあ、なんかやり方有るんだろうけど今度調べます。。。
あ、実機でも動きましたよ
さて、SQLite3のソースで動いたので
SQLite2のソースで試すかぁ。。。
でもVer3ソースは全部で4個(主要2個)だけど
Ver2ソースは全部で44個。。。
makeどうすりゃイイんだぁ!?(=д=;)
うまくいくのかぁ・・・・
投稿者:秀at 20:31
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
EclipseにCDT
ふむ
JNIやるにあたって
C、C++コーディング環境が必要になったので
Eclipseが既に有るので
CDT(C/C++ Development Tooling)を入れてみる
まあ、古いCUI環境なら有るには有るのだがぁw
ヘルプ⇒新規ソフトウェアのインストールを選ぶ
インストール画面の作業対象にEclipseのバージョン愛称を入れてみる
自分はVer3.7のIndigoだったのでindigoと入力
すると対象のリストが出るので
http://download.eclipse.org/releases/バージョン愛称
自分は
「Indigo - http://download.eclipse.org/releases/indigo」
を選択
一覧から
プログラミング言語⇒
C/C++ Development Tools
C/C++ Library API Documentation Hover Help (インキュベーション)
を選択して次に進み
ライセンス同意の後に
再起動メッセージが出るのでOKしてEclipse再起動
さてこれでEclipseでCコーディングOKかのぉ?w
投稿者:秀at 15:21
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)
JNI下準備ぃ
JNIを使うには
Android NDKと
Windows環境だとCygwinが必要みたいですね
とりあえず
NDKのZIPを落としてきて適当なフォルダーに解凍する。
※今回は最新android-ndk-r6b-windowsを取って来た。
次にCygwinのサイトからSetup.exeを取って来て
Select PackagesのDevelの選択で
gcc-core: C compiler と
make: The GNU version of the 'make' utility を
選択してインストールする。
で、NDK&Cygwin両方入れ終わったら
CygwinにNDKの居場所を設定ぃ〜
そうPATH設定です
DOS時代からの定番ですね
Cygwinインストールフォルダ¥home¥PC名¥.bashrc
を開き(自分はメモ帳で開きました)
export ANDROID_NDK_ROOT= NDK解凍したフォルダー
export PATH=$PATH:/cygdrive/c(ここドライブ)/ NDK解凍したフォルダー
自分の設定だとコンナ感じ
export ANDROID_NDK_ROOT=D:/android/android-ndk-r6b-windows/android-ndk-r6b
export PATH=$PATH:/cygdrive/d/android/android-ndk-r6b-windows/android-ndk-r6b
階層深いですがぁwww
一応確認でディスクトップ上の
Cygwinアイコンクリックでコマンド画面(以降CUI)を起動
CUIのプロンプトで「echo $PATH」と「echo $ANDROID_NDK_ROOT」を
たたいてみる
ま〜上記設定が表示されればOKかぁ〜
つぎに
NDK内に有るサンプルで動作確認ですね
CygwinのCUIのコマンドプロンプトでサンプル フォルダーまで移動
$ cd NDKインストールフォルダー/samples/hello-jni/
続いてCUIコマンドプロンプトでビルド
$ ndk-build
NDKインストールフォルダー\samples\hello-jni\obj\local\armeabi\libhello-jni.so
が出来上がりぃ
一応Eclipseで動くか確認です
Androidプロジェクトの「外部ソースからプロジェクトを作成」で
NDKインストールフォルダー\samples\hello-jni\を選択して
プロジェクトを作り普段道理に実行してみる
エミュレータが立上がり
「Hello from JNI !」が表示されればOKだねぇ
まあ下準備は、こんなところかね
ぼちぼち色々試してみて理解深めますかぁ〜
投稿者:秀at 13:54
| さんでープログラム(Android編)
| コメント(0)
| トラックバック(0)