投稿

Galaxy TABで画面に余白ができる

イメージ
何気に作ったアプリをGalaxy TABで動かすとアプリ画面が小さく表示され、画面周りに余白(余黒というのかな)ができることがあります。 なんか悲しい。。。 いまどきのアプリはAndroidManifest.xmlに <uses-sdk android:minSdkVersion="x" /> と書いてあると思いますが、 むかーし、むかしから動いているアプリにはこのタグがなかったり、 あったとしても <uses-sdk android:minSdkVersion="3" /> とかより小さい数字が書いてあると、この余白ができるようです。 最低でも、 <uses-sdk android:minSdkVersion="4" /> 使っといたほうがいいってことですね。 古いデバイスには引導を渡してやるってことで。。。 Excellent!!!

Androidのセンサー型番いろいろ

Androidのログをじーっと眺めていると各種センサーの型番が表示されることがあります。 タグ「SensorManager」で流れてくることが多いみたいです。 ※いや、機種によって全然表示のされ方が違います。確実なのは実機をバラしてチップを見る。ですかね。やんないけど。 収集できたものについてまとめてみます。 こういったセンサーによっても感度とか違うんですかね。 Dev phone 1 AK8976A 3-axis Accelerometer AK8976A 3-axis Magnetic field sensor AK8976A Orientation sensor AK8976A Temperature sensor Nexus One / Desire(X06HT) AK8973 T-01C ADXL345 Accelerometer MS-3C Magnetic Sensor MS-3C Orientation Sensor Galaxy Tab AK8973 Compass Accelerometer_AK Closed registerListener 1:BMA150 delay:xx ※電子コンパスはAK8793、加速度計はBMA150あたりを組み合わせて使っているのだろうか。謎。 HTC Desire HD AK8975 Compass Start AK8975の説明に三軸地磁気センサーとあるから、加速度計はまた別なんだろうか。 加速度計についてはよくわからず。 IS03 じーっと見てみましたが型番を示すログが見えない。 AK系じゃないのか、それとも、全く出していないのか。 不明。 L-04C AMI304 Orientation sensor AMI304 3-axis Magnetic Field sensor AMI304 3-axis Acceleration sensor AMI304 Proximity sensor N-04C(2011/2/24確認) AK8977 Compass AK8977 Accelerator AK8977 Magnetic Field GP2AP012A00 Light GP2AP012A00 Proximity SO-01C(2011/2/24確認) BMA150 Accelerometer AK897...

MapActivityとClassNotFoundError

適当に作ったMapActivity継承のActivityを起動すると「ClassNotFoundError」というエラーが出て起動できない。こんなことありませんか? 適当に作るからイケナイのです。 私もその類です。 そんな人は、 Top / 勉強会 / GoogleMap をちゃんと読めばいいのです。 昔読んでちゃんとできたんだけど、すっかり忘れてた。反省。 要はAndroidManifest.xml内に <uses-library android:name="com.google.android.maps"/> の記述をすれば解決します。

skyhookのBulkデータアップロード

イメージ
前回の投稿、「 Skyhook試してみました 」でBulkデータのフォーマットについて問い合わせたけど回答がなかったと書きましたが、その後、回答があり、フォーマットが判明しました。 フォーマットが変更されるかもしれないので、最新版については「support@skyhookwireless.com」に問い合わせてくださいね。 ぴーでぃーえふをぶろぐに貼るには。。。えい!面倒だ!べたっ! Optionalとなっていますが、Building, Room, Floorとかいうデータがあるのは、より意味のある位置特定ができる可能性を示していて興味深いですね。 すみません、仕事が雑で。

万歩計の作り方(Ver.3.0.0)

イメージ
◇SmartTraining 3.0.0 Ver.3.0.0で万歩計ロジックを大幅に変更しました。 ザザっと解説。 ◇どうやって歩数を測るか SmartTrainingにおける万歩計は3次元の加速度データを利用します。 ◎加速度成分合成値の計算 携帯電話は本物の万歩計と違ってどうやって保持されるかわからないので、1次元の加速度だけでは、正確に計測できない可能性があります。このため、3次元の加速度(raw-x,raw-y,raw-z)を合成した値(raw-composit)を求めます。 ◎デジタルフィルタ raw-compositは基本的にセンサーから取得した生のデータです。生のデータには、歩数計算には邪魔な、様々な雑音が含まれます。歩行時の体の回転による加速度、ポケットの中での端末の振動などなど。余分な雑音は取り除いておいた方がより正確な歩数計測が行えるので、デジタルフィルタを適用して不要な成分を取り除きます。 今回は、 IIR によるLPFを作成し0.0030Hzより高い周波数成分を排除しています。デジタルフィルタを適用することでprocessed-compositを計算します。IIRのパラメータはフィルタ職人の腕の見せ所ということでうやむやにします。 ◎歩数のカウント processed-compositは、安静時の重力加速度(G)を中央値として、一定の振幅で振動しています。歩数計では、この加速度の振幅の山と谷を1サイクルとして認識してサイクルを検知することで歩数を数えることにします。サイクルの検知条件は下記のとおりです。 ・山の振幅が一定以上あること。 ・谷の振幅が一定以下あること。 ・山と谷の振幅が一定以上あること。 ・山と谷の時間差が一定時間内であること。 山の後でこれらの条件を満たさない場合、再び山の検知処理を続けます。 こうしてカウントをすると以下のグラフのshakeの値が歩数を表しています。 この方式に変更することで、以前の方式が20%程度の誤差だったのに対して、2%程度の誤差まで性能向上を図ることができました。 ◇注意事項 どんな方式で万歩計を作成するにしろ、計測条件は計測結果に大きく影響を与えます。 今回の方式では、どんな持ち方をしてもある程度計測できるように3次元の合成値を利用していますが、だからといって、端末が回転するような持ち方をするとノイ...

Skyhook試してみました。

◇ Skyhook って? Google翻訳によると、 「スカイフックの場所の位置、コンテキストと知能の世界的リーダーです。スカイフックは、今日のWi - Fi測位システムの先駆けと場所を提供します。モバイルデバイスとアプリケーションの数千万します。」 だそうです。ふ~ん。 Android標準のLocationManagerと似たような機能を持つシステム、ということが言えるかと思います。 ◇特徴は? XPSと呼ばれる位置測位の仕組みが特徴です。 XPSはA-GPSとWPSを組み合わせた精度の高い位置測位を提供します。 A-GPSは屋外での精度の高い位置測位に有利です。 WPSはGPSが利用できない屋内・地下でWi-Fi APまたはCell towerの電波により位置測位を可能にします。 詳しくは コチラ 。 また、Tilingという仕組みを利用することによりあらかじめ一定の範囲のWi-Fi APデータベース情報を端末内にダウンロードしておくことで、Skyhookサーバと通信できない状況でも位置測位可能にすることができます。 ◇利用可能なエリアは? ヨーロッパ、アメリカ合衆国、韓国、日本などで 利用可能 です。 日本では、東京、大阪、名古屋とそれらを結ぶ東海道新幹線に沿った地域で利用可能です。 また、「 Submit a Wi-Fi Access Point 」することにより、対応可能地域を増やしてやることが可能です。 GoogleのNetwork Providerによる位置測位の対応エリアがどの程度なのかはよくわかりません。 ◇どうやって使うの? いろいろなプラットフォームをサポートしていますが、ここではAndroid版についてのみ説明します。 1.まず、Skyhook SDKを ダウンロード します。 2.SDKには、ライブラリ、ドキュメント、サンプルが含まれます。 3.自前のプロジェクトにライブラリ(wpsapi.jar)を含めることで利用可能になります。 4.詳しくはサンプル、ドキュメントを参照のこと。 ◇Android標準のLocationManagerとの違いは? LocationManagerもGPS_PROVIDERとNETWORK_PROVIDERを利用することで、XPSと全く同じようなことができます。 それじゃ、Skyhook使う意味ないじゃん、と...

サイズの異なる文字列をボタン上に配置する

ヒントは ここ にあったけど、惜しい、XMLからstrings.xmlのリソースを指定したいのにこの方法だとダメ。あと一歩足りない。 というわけでやり方はこちら。 MultiTextViewというカスタムViewを作成します。 仕様的にはmainTextとsubTextを指定可能とし、それぞれ、テキスト、文字サイズ、文字色を指定可能とします。 まずは、XMLから指定可能な拡張attrを定義します。 valuesフォルダ配下にattrs.xmlファイルを配置して中身をこんな感じに。 -attrs.xml 次に、MultiTextButton.javaで実装。 -MultiTextButton.java public class MultiTextButton extends Button { public MultiTextButton(Context context, AttributeSet attrs) { super(context, attrs); initAttribute(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MultiTextButton); CharSequence mt = a.getText(R.styleable.MultiTextButton_mainText); CharSequence st = a.getText(R.styleable.MultiTextButton_subText); if ( mt != null ) mainText = mt.toString(); if ( st != null ) subText = st.toString(); mainTextSize = a.getDimension(R.styleable.MultiTextButton_mainTextSize, 10.0f); subTextSize = a.getDimensi...