一定期間更新がないため広告を表示しています
AndroidのContextメニューの文字や背景の色を変えようとしてひどい目に遭う
- 2014.07.06 Sunday
- Androidでプログラム
- 15:53
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
AndroidのContextメニューといいますと、Listviewの項目をロングタップしたらメニューが出るというものです。
元から用意されている便利な機能なのですが、メニューの項目の文字色を変えたりしようとしても基本的には出来ないみたいです。なぜ色を変えたかったかというと自作のアプリで配色を色々いじっていたらコンテキストメニューの文字色が背景と同じ色になってしまって見えなくなる、という現象に遭遇したからでした(=本とか読んで系統立てて勉強していないとこうなる)。
手元の環境ではStyle.xmlでtextColorやらBackgroundやらを指定するとそれに引きずられて変わることもあったのですが、エミュレータと実機で結果が異なったりで、何がなにやら、さっぱりわかりません。どうにも困ったことになりました。
これは、自分のやり方がまずいに違いありません。
さらに調べてみると、StackOverFlowに(英語で)SpannableStringクラス使えばできるよ!、と書いてあったので喜び勇んで試してみたのですが、確かに文字色は変わったのですが・・・コンテキストメニューの項目を選択すると、例外が発生します。これじゃメニューの役に立ちません。
なんかもう、もう調べるの疲れました・・・。
費やした時間でコンテキストメニューっぽいダイアログを自作する方法調べたほうが早かったかも・・・。
Androidとジオイド2011 その2
- 2014.07.06 Sunday
- Androidでプログラム
- 15:43
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
前回の続きです。
だいぶ日が開きましたが、その間に、ある程度動くところまで作ってしまいました。
結果としては、自分の持っているスマートフォンからGPSから得られる標高データのばらつきが激しくジオイド補正って意味あるんかな? と思いました。骨折り損的な。
以下、実際に何をやったか書きます。
まずメッシュデータですが、国土地理院のサイトからまとめてファイルとして手に入ります(※)が、以下のサイトから必要な分だけ取り出したほうが、簡単でした。
http://surveycalc.gsi.go.jp/sokuchi/geoid/calcgh/calcframe.html
※実際に使用する場合は念のため関連の法令などにご注意ください。国土地理院のサイトにも説明があります。
上記サイトで「一括計算」というタブをクリックすると、得たい地点のジオイド高のデータをファイルで一括指定することが出来ます。一括といっても「ここから〜ここまで全部ちょうだい」という指定は出来ず、地点をひとつずつ一行に記述しないといけません。
Eclipse環境に馴らされた体には大変つらいことでしたが、perlの入門サイトを見ながら以下のようなスクリプトをコード補完ののないテキストエディタでこさえました(perl触ったの初めて)
perlはActiveperlだったと思います(何につかったのか、いつインストールしたかも思い出せない・・・)。
##ジオイドデータを得るためのinput.datを自動生成するスクリプト
#緯度
$lat=000000.0000;
$start_lat=200000.0000;
$end_lat=500000.0000;
$incre_lat=2000.0000;
#経度
$lon=0000000.0000;
$start_lon=1200000.0000;
$end_lon=1500000.0000;
$incre_lon=2000.0000;
#カウンタ
$counter=0;
for ($lat = $start_lat ; $lat <= $end_lat ; $lat=$lat+$incre_lat)
{
for ($lon = $start_lon ; $lon <= $end_lon ; $lon=$lon+$incre_lon)
{
$counter++;
printf("%6.4f %7.4f¥n",$lat,$lon);
}
}
※incre_ほにゃららの値を変えると取得するメッシュの精度が変わります。
上記のままだと2万数千行くらいになったかと思います。
ちなみに3万行を超えるファイルは受け付けられません。
これを実行して得られたテキストファイルをさっきのサイトに放り込むと、緯度/経度/ジオイド高が数万行に
わたって列挙されたファイルが手に入ります。
う〜ん。でかいファイルです。ファイルを見てみるとほとんどの行のジオイド高が-9999.0000とかってなっ
てますね。これらは有効なデータではないということを示しているそうです。さっきのスクリプトだと斜めに
細長い日本全体が収まる矩形のデータを得ようとするのでこうなってしまいます。
なので、意味のない行は全部消します。
あとは、「000.0000」みたいな部分は全部消しました。
そうすると、だいぶファイルも小さくなります。それでもちょっと大きいか・・・。
あとは、GPSから得られた緯度経度を元に、このファイルから該当する地点のジオイド高を検索してきて、GPSから得られた標高から引くとジオイド高での補正は完了です。
ほんで実際に自分のアプリに上記機能を組み込んで試してみたのですが、最初に書いたとおり、同じ場所で何回も測位してみたところ、GPSの返してくる標高があまりにもバラバラ(100m近く違ったりも・・・)なので、それをジオイド高(だいたい30〜40m)で補正する意味あったんかな・・・と徒労感でいっぱいになりました。
Androidとジオイド2011
- 2014.06.20 Friday
- Androidでプログラム
- 13:46
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
いろいろ調べておりますと、標高データはそのままではあまり正しくなく、
ジオイド高というもので補正する必要があるとのことでした。
※ジオイド高以前に、GPSで得られる標高は、緯度/経度と比較しても精度が低い
とのことです。
「GLONASS」や「みちびき」を併用した場合は、精度が上がるのかもしれません。
位置情報がわかっているんであれば、GoogleMapなどから標高を取り出せそうなもん
ですし(※)、そのほうが精度が高そうですが、電波の入らない(=インターネットに接続
できない)ところ、登山中などでバッテリ節約のために電波OFFにしておきたい状況
などもあると思われます。登山中なら地形図みろよ、というお話ではありますが。
※やり方は知りません。
そこで、このジオイド補正について調べてみたのですが、「このコードでOK」という
サイトを見つけることが出来なく、仕方なくいろいろ調べて考えた結果、以下のような
方法で出来そうです(未実装なので「出来そう」って書いてます・・・)。
※とはいうものの、ちゃんと探せば、stackoverflowとかに、もっとスマートなやり方
が載っているものと思われます・・・。
まず、ジオイド補正というのは以下のようなことらしいです。
補正前の生データの高度ージオイド高=標高
計算自体は単なる引き算ですが・・・。
で、このジオイド高をどうやって求めるかというと、その場所ごとに異なっているようです。
つまり、日本地図をメッシュに分割して、メッシュごとにジオイド高が割り当てられている
というような配列的なものを用意しないといけないようです。
というわけで、ここから話が面倒になってきます。
要するに、以下のようなことを自分でやらないといけないわけです。
(1)このジオイド高のメッシュデータを手に入れてきて自分のアプリで使いやすいよう
に加工する
(2)位置情報からこのメッシュデータの該当するジオイド高を取り出せるようにしておく
ああ、面倒くさい・・・もうジオイド高は「一律で38mとする」とかでもいいんではないか
と・・・。
一応、メッシュデータを作るところまでの手順はやっ(てしまっ)たので、次回以降に書いてみます。
ISW12HTでS-OFF(Android2.3)で失敗→成功
- 2013.10.15 Tuesday
- Androidでプログラム
- 08:52
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
ほとんどのサイトではAndroid4.03(ICS)にアップデートしたものが紹介されていましたが、当方の事情(自作アプリを当面Android2.3で開発したいため)で、アップデートせずにS-OFFを試みました。
4.03でのアップデートに比べると事例が少ないみたいですので、何かの参考になると思い、私の失敗を紹介します。
<失敗事例>
S-OFFする前に、Android2.3の最新のアップデート(※)を適用しておくこと。
※こちらのau公式サイトを参照ください。
最新のアップデート適用しないと、何度やってもまったく成功しませんでした。もうあきらめてAndroid4.03にしてからにしようと思い、本体からアップデートかけようとすると、そもそもAndorid2.3の最新状態になっていませんでした。
こんなミスをされる方はおられないのかもしれませんがご参考に・・・。
山行記録メモアプリをGoogle Playで公開しました
- 2013.07.21 Sunday
- Androidでプログラム
- 07:38
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
Androidあるある。R.javaが再生成されずにはまる
- 2013.05.24 Friday
- Androidでプログラム
- 11:15
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
Androidで開発していると、解決策を忘れそうになるころにはまるのが、表題の現象です。
たいていは*.xmlファイルのどこかに問題があるか、Eclipse上で*.xmlにフォーカスを当てた状態で実行してしまって*out.xmlファイルができてしまっているかが原因ですが、今回はそれらに該当せず悩んでしまいました。
生活がバタバタしていて趣味の開発から1年近く離れていたこともあり「いつの間にか何かファイルの置き方とか命名規則とかのお作法が変わったのかしら」とか悩みました。
結論としては原因はこちらでした・・・全然あるあるな原因じゃないし。
http://kokufu.blogspot.jp/2013/05/eclipse-adt-ver-22-rjava.html
Android SQLITEで勝手に元のファイル名に"-shm"やら"-wal"が追加されたファイル名のファイルができていてえらい目にあった
- 2012.09.23 Sunday
- Androidでプログラム
- 03:34
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
たぶん私のお作法がよろしくなかったのでしょう。
ようやくわりと一般的な機種をデバッグ機にすることができ、ウキウキ気分でプログラムを満喫していたのですが、ソースをまったくいじっていない部分で例外が発生。
調べてみたところ、SQLITEのデータベースの格納先ディレクトリにあるファイルのリストを取得して、全データベースファイルに対して処理を行っていたところで例外になっていることがわかりました。
どうもデータベースファイルのディレクトリに勝手にタイトルのような「元のデータベースファイル名」+"-shm"みたいなファイルがたくさんできていたのでした。
たとえば元のファイル名が "hogehoge"だとすると、それに加えて"hogehoge-shm"とか"hogehoge-wal"といったようなファイルもセット生成されているといったイメージです。
これらがこちらの期待する形式のファイルじゃないので例外になっていたのですね。
Google様によると「これはSQLITEのバージョンアップによるものじゃ。精進せい!」とのこと。
というわけで、「ファイル名に”-wal”やら"-shm"が含まれているファイルは期待する形式のファイルではないので処理をスキップする」という場当たり的な対応で対応しました。近い将来SQLITEの仕様が変わってまた泣きを見ることでしょう。
本当はもっとエレガントな方法があると思われますが、時間が時間なので今日はこれで寝て明日考えることにします。
※SQLITE形式のファイルかどうかを判定するメソッドとかあるかも。
しかし、Google様とEclipse様があって本当によかった。これが90年代初頭なら徹夜で悩んだ末、解決できずにもやもやしたままあきらめたかもしれません。
Android:山行記録アプリを公開しました
- 2012.09.17 Monday
- Androidでプログラム
- 06:26
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
サンデープログラマが作った趣味レベルのもので品質は??でありますが、登山用のAndroidアプリ「山行ノート」を以下のページで公開しました。GPSロガーではなく、ノート(手帳)に記録をとる感覚のアプリです。
Google Playには公開していないいわゆる野良アプリですがよかったらお試しください。
なるべく、パーミッションを要求しないつくりにしています。
今後のバージョンアップで過去の記録が読み込めない、といった事態はないようにしたいと考えておりますが、当方の力量不足でそういったこともあるかもしれませんので、「まあ、いいか」という感じで使っていただけますようお願いいたします。
おかしなところなどありましたらお知らせいただけるととても助かります。
山行ノート公開ページhttp://d.hatena.ne.jp/peekatpeak/
http://www49.atwiki.jp/peekatpeak/
※たぶん移転します。→移転しました(1/11追記)。
Androidでプログラム 山行ノート
- 2012.07.10 Tuesday
- Androidでプログラム
- 08:09
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
センスがないので見た目とか機能性はともかく、まあまあ動いてくれるなあ(テスト不足ですが・・・)というものが出来てきました。毎日1時間くらいしか時間が取れないのでコツコツやってます。コツコツなにか続けるのって人生初だったりして・・・。独身の頃だったら平日でも一日8時間くらい投入してしまって生活リズム崩してしまってたろうと思います(わはは)。
エレガントな実装方法が思いつかなくても「動けばいいや」って思っている場合があるのでソースはえらいことになってます。
こんな感じで山行の名前を設定しまして・・・。
こんな感じでメモを取ります。これは六甲山系摩耶山の登山開始地点です。
こちらは山行全体の感想を書いたりします。分類で山域や山行形態なども記入できます(並び替えの要素としても使います)
山行メモ全体。紙のノートと違って新しいものが上に来ます。
(追記)
こちらでひっそり公開中です。
http://www49.atwiki.jp/peekatpeak/pages/1.html
Android MapView使うときのAPIキーの取得方法
- 2012.06.03 Sunday
- Androidでプログラム
- 06:30
- comments(0)
- trackbacks(0)
- -
- by 頓智亭
APIキー取得サイトでは「MD5」の値を入力するよう促されているのに、keytoolの値はなぜかSHA1となっていた・・・うーむ。原因はこれだろうなあ。
googleで検索してみるとkeytoolの仕様が変わっててデフォルトで出力されるのがSHA1の値になったらしい(Oracle vs GoogleのJAVA訴訟がらみの嫌がらせ・・・?のわけないか)
対処方法はkeytool のオプションに-vを追加してMD5の値も表示させるというものでした。
こちらのページを参考にさせていただきました。
ちなみにWindowsのコマンドプロンプトに表示された文字列のコピーは[ALT]+[SPACE]で表示されるメニューから「編集」→「範囲指定」→「コピー」とやるとできますよ。
一旦ノートパッド等に貼り付けて内容を整形することをお勧めします。
- calendar
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- sponsored links
- selected entries
-
- AndroidのContextメニューの文字や背景の色を変えようとしてひどい目に遭う (07/06)
- Androidとジオイド2011 その2 (07/06)
- Androidとジオイド2011 (06/20)
- ISW12HTでS-OFF(Android2.3)で失敗→成功 (10/15)
- 山行記録メモアプリをGoogle Playで公開しました (07/21)
- Androidあるある。R.javaが再生成されずにはまる (05/24)
- Android SQLITEで勝手に元のファイル名に"-shm"やら"-wal"が追加されたファイル名のファイルができていてえらい目にあった (09/23)
- Android:山行記録アプリを公開しました (09/17)
- Androidでプログラム 山行ノート (07/10)
- Android MapView使うときのAPIキーの取得方法 (06/03)
- categories
-
- Androidでゲーム (1)
- Androidでプログラム (16)
- SWBF2(STARWARS BATTLE FRONT2) (12)
- もろもろ (5)
- コンピュータ (4)
- テレマークスキー (48)
- テレマークスキー道具 (38)
- 自転車 (4)
- 登山 (26)
- 登山道具 (14)
- 旅行 (1)
- archives
-
- February 2022 (1)
- January 2022 (1)
- November 2021 (1)
- October 2021 (2)
- July 2021 (2)
- June 2021 (1)
- May 2021 (2)
- March 2021 (1)
- February 2021 (1)
- January 2016 (1)
- February 2015 (1)
- July 2014 (3)
- June 2014 (1)
- December 2013 (1)
- November 2013 (1)
- October 2013 (3)
- August 2013 (1)
- July 2013 (1)
- May 2013 (1)
- April 2013 (1)
- March 2013 (1)
- February 2013 (2)
- January 2013 (2)
- December 2012 (2)
- November 2012 (1)
- September 2012 (3)
- July 2012 (2)
- June 2012 (1)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (6)
- January 2012 (2)
- December 2011 (5)
- November 2011 (1)
- October 2011 (6)
- September 2011 (4)
- August 2011 (1)
- July 2011 (3)
- June 2011 (2)
- May 2011 (3)
- April 2011 (1)
- March 2011 (1)
- February 2011 (2)
- January 2011 (5)
- December 2010 (4)
- November 2010 (7)
- October 2010 (3)
- September 2010 (8)
- August 2010 (7)
- July 2010 (1)
- June 2010 (8)
- May 2010 (6)
- April 2010 (4)
- March 2010 (4)
- February 2010 (3)
- January 2010 (6)
- December 2009 (10)
- November 2009 (7)
- October 2009 (2)
- recent comment
-
- コントラクトキラー:攻略メモ
⇒ 頓知亭 (05/01) - コントラクトキラー:攻略メモ
⇒ ヨシダ (04/25) - 新しいブルドッグ、でた(RTbulldog)
⇒ 頓智亭 (04/06) - 新しいブルドッグ、でた(RTbulldog)
⇒ kn5 (03/31)
- コントラクトキラー:攻略メモ
- profile
- search this site.
- mobile