2012年12月22日土曜日

root化せずにカメラのシャッター音を消す



まだレビューを貰えてないので動作する端末が正確ではありません。
統計情報を見る限りは多くの端末で成果を上げています。
解像度を落とさずにカメラを無音化できるアプリは珍しいと思います。
人によってはroot化してまでシャッター音を無くすらしいのですが、
開発者でもないのに危ない橋を渡る必要はないと思います。

「EVO 3D ANDROID4.0.3」なら無音化できます。
カメラの使用後すぐにサイレンサ―を外すと、遅れて音が鳴る事がありますが、
サイレンサ―を付けている間は完全にカメラもビデオも無音化できます。
3D撮影を無音化できる唯一のアプリかもしれません。

「EVO WIMAX ANDROID2.3.3」は静音化できます。静かな場所でしか聞こえないくらいのシャッター音です。ビデオカメラは無音化できます。

その他の端末についてはまだ分かりません。現在は三種類のサイレンサ―モードを用意しています。テストできる端末が増えればサイレンサ―を増やすかもしれません。

今回のアプリはカメラ機能は他のアプリに任せて、開発コストを減らしました。
そのためやや安定性に欠けるところが有ります。



猫や子供の撮影にしようしてください。




スマホはバグだらけ

スマホを使用していると突然電源が切れたり、動きが悪くなったりする事があると思います。
原因はOSやアプリのバグである事が殆どです。

昔の携帯にはこんな事は無かったっと思うかもしれませんが、
バグの数=機能数÷メーカーの技術力
このような式にするとバグの発生率は昔と変わらないのかもしれません。

バグが多いのは機能が多いからとも言えます。
それとメーカーの技術力が低い可能性があります。
現にHTCのようなスマホ専門のメーカーはバグが少なく安定しています。
日本のメーカーにも頑張ってほしいところです。


アプリの端末固有バグはメーカーのパラメータ設定が正しくない場合もあるので勘弁してほしい。。

何故スマホを使うのか

ガラケーからスマホに機種変する人の多くは
新しい携帯電話にしようといった感覚でスマホに乗り換えている気がします。
実のところスマホは携帯電話ではありません携帯電話の機能が付いているパソコンです
誤った認識機でスマホに機種変してまともに扱えていない人が殆どです。


スマホを使用する目的一覧
・地図&カーナビ
・パソコンと同様のブラウジング(Flashなども)
・アプリを利用して色々なツールにできる
・ゲームが多い(エミュレータも多数)
・WEBメールを使用できる
・フェイスブックやツイッターとの連携ができる
・音楽プレイヤー
・カメラ&ビデオカメラの性能がやや高い

特にカーナビやWEBメールはビジネスに役に立ちます。

2012年12月20日木曜日

OBB拡張ファイルダウンロード

拡張ファイルのダウンロードテストの注意メモ


まず、ダウンロードのテストはGooglePlayでアプリ本体がダウンロードできる状態にします。
アプリ本体がGooglePlayに公開されたら、テスト中なのでアプリの公開を停止しましょう。
公開を停止すると検索などに載らなくはなりますが、公開されたページのURLから直接開けばアプリをダウンロード可能です。

*アドビのフラッシュプレイヤーと同じようにバージョンアップは出来るが検索に載りません。

アプリ本体がダウンロードできる状態でないとOBB拡張ファイルもダウンロードできません。

何時ごろからやら、ライセンスキーはアプリ個別に設定されるようになりました。
デベロッパーコンソールで新規アプリのアップロード時に「ライセンスキーを個別に行いますか?」と
YES,NOボックスが表示されてNOを選んだのですが、今までのライセンスキーでないものが割り当てられていました。。テストするまで気付きませんよ・・・

他にもOBBファイルを新しくするなどしていると、色々とダウンロードのエラーが発生します。
拡張ファイルを扱う際はGooglePlayが更新されるのを待つしかないようです。

OBBファイルのダウンロードを利用すれば無料アプリにライセンス認証機能をつけられるので重宝します。

2012/12/22追記
マニュフェストのバージョンコードと、それに対応付けてアップロードまたは関連付けたOBBファイルでないとライセンス認証に引っ掛かります。

カメラ サイレンサ―

無料アプリ「カメラサイレンサ―」をリリースしました。

カメラまたはビデオカメラの性能を落とさずにシャッター音を無音化もしくは静音化します。

大半の無音カメラアプリは画面のキャプチャを保存しているだけですが、「カメラサイレンサ―」は端末のスピーカーを制御して無音化しています。
そのため最大解像度で撮影可能です。

3D撮影やパノラマ撮影が可能なカメラアプリと組み合わせる事も可能です。

!マナーモード中に使用すると機能しない事があります。
!全ての端末で動作するとは限りません。カメラアプリとの組み合わせも試してみてください。
動作の可否に関わらずレビューを頂けると助かります。




大音量でシャッター音をさせるのは気がひける場所や、
動画撮影時のフォーカス音まで録音されてしまう場合にご使用ください。



//動作確認端末
EVO 4G x-mode 静穏 Android2.3
EVO 3D z-mode 無音 Android4.0

2012年12月17日月曜日

proguardの警告 can't find referenced class com.google.ads.internal.state.AdState

can't find referenced class com.google.ads.internal.state.AdState

admobのjarファイルをproguardで難読化したさいの警告です。


[2012-12-17 10:00:55 - App Silencer] Proguard returned with error code 1. See console
[2012-12-17 10:00:55 - App Silencer] 警告: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
[2012-12-17 10:00:55 - App Silencer] 警告: com.google.ads.m: can't find referenced class com.google.ads.internal.state.AdState
[2012-12-17 10:00:55 - App Silencer]       You should check if you need to specify additional program jars.
[2012-12-17 10:00:55 - App Silencer] 警告: there were 2 unresolved references to classes or interfaces.
[2012-12-17 10:00:55 - App Silencer]          You may need to specify additional library jars (using '-libraryjars').
[2012-12-17 10:00:55 - App Silencer] java.io.IOException 発生: Please correct the above warnings first.
[2012-12-17 10:00:55 - App Silencer] at proguard.Initializer.execute(Initializer.java:321)
[2012-12-17 10:00:55 - App Silencer] at proguard.ProGuard.initialize(ProGuard.java:211)
[2012-12-17 10:00:55 - App Silencer] at proguard.ProGuard.execute(ProGuard.java:86)
[2012-12-17 10:00:55 - App Silencer] at proguard.ProGuard.main(ProGuard.java:492)

色々と調べてみましたがadmobの構造が悪いようです。
警告を無視しても問題ありません。

proguard.cfgファイルに
-dontwarn com.google.ads.**
と追記して警告を無視しましょう。

2012年12月16日日曜日

レイアウト変更エラー java.lang.ClassCastException: android.widget.XXX to android.widget.YYY

java.lang.ClassCastException: android.widget.RadioGroup cannot be cast to android.widget.Button
XMLのレイアウトを変更したら謎のキャストエラーが発生。

どうもR.JAVAのボタンなどの部品のIDが更新されなかったようです。
今回はボタンとラジオグループの上下位置を入れ替えると発生しました。

もし、ボタンとボタンなど、同じ部品の位置を入れ替えていたら、キャストエラーにはならず見つかり難いバグになっていたかもしれません。

プロジェクトをクリーンすれば解決します。

2012年12月8日土曜日

ANDROIDバージョンの違いによる隔たり

ANDROIDアプリは上位互換があるはずなのですが、
2.3向けに作ったアプリをメジャーバージョンの違う端末に動かすとバグだらけに。。
ハードウエア制御関係はアプリをバージョン毎に分断するしかないようです。
ストアのフィルタリングを開発者画面から細かく設定できればいいのに。。

バージョン2.X系とバージョン4.X系で切り離そう
バージョン3.X系は・・・

ICS端末を新しく用意して正解でした。
ネクサス4日本で発売してほしいところです。


SDカードは差せないみたいです。
クアッドコアメモリ2ギガ、それにIPHONE5以上の液晶で値段は3万円以下になると思います。
バージョン4.2以上はこの端末でテストしよう。

2012年12月6日木曜日

AmazonAndroidStoreアマゾンアプリマーケット

アマゾンのANDROID用マーケットがオープンしました。
https://developer.amazon.com/home.html

開発者登録をしつつ、
GooglePlayとの違いを調べてみました。

開発者登録料は無料ですが、どうやらアプリのサイズ制限は30Mbのようです。
追加ファイル用のFTPなどは別料金っぽいですね。

英語は字数が多すぎて読むのが大変。。

著作権に関してはGoogleよりもしっかりしていそうです。

端末にAMAZONストアアプリをインストールするには
APKファイルをブラウザからダウンロードしないといけないので
ANDROIDの扱いに慣れていない人には優しくないかもしれません。

ただ、GooglePlayやGoogleMapはプリインストールにランセンス料金が発生するようですから
AMAZONの戦略次第で一気に広がるかもしれません。

オススメANDROID端末

おすすめのANDROID端末

・EVO 3D
ANDROID4.0.3、デュアルコアの端末を新品で一万円以下で買えます。



スペック
[OS}Android 4.0.3
[CPU}デュアルコア1.2GHz (Qualcomm MSM8660)
[サイズ}約 126ミリ×65ミリ×12.05ミリ
[重さ}約 170グラム
[画面}4.3インチ(960ドット×540ドット)
裸眼3D表示ディスプレイ(視差バリア方式)、MHL、DLNA対応
[RAM}1GB
[内部ストレージ}4GB
[外部メモリーカード}最大容量32GB microSDHC
[リアカメラ}500万画素×2 、(3D撮影対応)
動画 2D 1080pHD 1920×1080 / 3D 720pHD 1280×720
[フロントカメラ}130万画素
[カメラライト}LED×2
[Wi-Fi規格}IEEE 802.11 b/g/n
[Bluetooth}Bluetooth バージョン3.0
[GPS}有り
[マイク}ステレオマイク

2011年6月24日に発売された機種ですが2012年度のミドルエンドモデル並みの性能があります。

ガラパゴス機能を除けば、LTEやWHSが使えないくらいが弱点ではないでしょうか?
それもWIMAXが使えるので電波が入れば問題ありません。
3G回線やLTEだと通信限度量がありますし。

EVOシリーズを今まで使っていますが、HTCの端末は安定性があると思います。

何より安くてハイスペックですよね。

3Dカメラは、デジカメを持っている人には物足りない絵になるかと思います。3D動画は手ぶれ修正が必要。
裸眼立体ディスプレイは3DSよりずっと優れています。
専用機並みの性能を求めなければ十分楽しめるレベルです。
どんなにカメラ性能を重視した携帯電話も安物のコンデジに勝てないのが現状ですので過度の期待は禁物。

3/1追記
動画のフルハイビジョン撮影には対応していませんでした。
動画撮影時にはステレオマイクを使用できます。
ステレオマイクは端末上部と下部に分かれており指向性は弱いようですがしっかりステレオ録音されます。

ステレオカメラにステレオマイク、裸眼3Dディスプレイ(QHD)、予備バッテリー付きといった珍しい機能を備えています。




2012年12月1日土曜日

芸術絵画集 完全版



3718点の絵画作品をオフラインで観賞できます。
指定した画家の作品、もしくは時代別にスライドショーで表示できます。
お気に入りの絵画を壁紙に設定可能です。

..主な収録画家
レオナルド ダビンチ
ミケランジェロ
ラファエロ
サンドロ・ボッティチェリ
ルーベンス
フェルメール
ミレー
ゴヤ
モネ
ルノワール
モネ
ゴッホ
ゴーギャン
ドラクロワ
その他200名以上

..主な機能
拡大縮小 ダブルタップ
画像の切り替え スワイプ
スライドショー
画家の検索とフィルタリング
作品一覧表示
壁紙設定

・収録リスト  (日本語、韓国語で検索可能)
agasseアガッサ아갓사
Aivazovskyアイヴァゾフスキー아이 바 조프 스키
Altdorferアルトドルファー알토 달러 퍼
Amanアマン아만
Andersonアンダーソン앤더슨
Anguissolaアンギッソラ안깃소라
Baldungバルドゥング・グリーン바루둔구 그린
Batonバトン버튼
Bazilleバジール바지루
beardsleyオーブリー・ビアズリー오브 · 비어 즐리
Beccafumiベッカフーミ벳카후미
Belliniベッリーニ벨리니
Besnardベナール베나르
BlairLブレア=レイトン블레어 = 레이튼
Blakeブレイク브레이크
Boccioniボッチォーニ봇찌ォ니
Boeklinベックリン벳쿠린
Boillyボワイー보와이
Boschボッシュ보쉬
Botticelliボッティチェリ보티첼리
Boucherブーシェ부세
Bouguereauブーグロー부구로
Bourdonブルドン부르
Boutsバウツ바우쯔
Brewtnallブリュートネル브루 토넬
Bronzinoブロンズィーノ부론즈ィ노
Brownブラウン브라운
Brueghelブリューゲル부류게루
BurnJonesバーン=ジョーンズ반 - 존스
Cabanelカバネル카바네루
campinカンピン칸삔
Canalettoカナレット카날레토의
Caravaggioカラヴァッジオ카라봐지오
caronキャロン캬론
Carpaccioカルパッチョ카르 파 치오
Carracciカラッチ카라치
Cassattカサット카삿토
Cezanneセザンヌ세잔
Champaigneシャンパーニュ샴페인
Chardinシャルダン샤루단
Charlesチャールズ찰스
Chasseriauシャセリオー샤세리오
cheretジュール・シェレ쥘 세레
Christusクリストゥス쿠리스투스
Churchチャーチ처치
Cimabueチマブーエ찌마부에
Clairinクライリン쿠라이린
Clouetクルーエ쿠루에
Coello·コエーリョ· 코엘료
Cognietレオン・コニエ레온 코니에
Collierジョン・コリア존 코리아
Coneglianoコネリアーノ코네리아노
Constableコンスタブル경호
Copleyコプリー코플리
Corotコロー코로
Correggioコレッジョ코레 지오
Cosimoピエロ・デ・コジモ피에로 데 코지모
Cossaコッサ콧사
Courbetクールベ쿠르베
Courtジョゼフ=デジレ・クール조셉 = 데지레 꾸르
Coutureトマ・クチュール토마 쿠튀르
Coypelコワペル코와뻬루
CoypelNコワペルN코와뻬루 N
Cranachクラーナハ쿠라나하
Craneクレイン크레인
Crivelliクリヴェリ쿠리붸리
Cuypカイプ카이뿌
Daddリチャード・ダッド리처드 더들리
Daumierドーミエ도미에
DavidGダーフィット폴더 맞는
DavidJLダヴィッド다비드
daVinciレオナルド・ダ・ヴィンチ레오나르도 다빈치
Degasドガ드가
Delacroixドラクロワ들라크루아
Delarocheドラロッシュ라 로슈
Derbyダービー더비
Desportesデポルト데뽀루토
deTroyド·トロイ드 트로이
Dickseeディックシー딕시
Doreドレ드레
Dossiドッソ・ドッシ돗소 · 돗시
Douドウ미상
Draperドレイパー드레이퍼
Drouaisドルーエ도루에
Duccioドゥッチョ두쵸
Dughetデュゲ듀게
Durerデューラー뒤러
Eakinsエイキンズ에이킨즈
ElGrecoエル・グレコ엘 그레코
Elsheimerエルスハイマー엘스 하이머
FantinLaファンタン팬 탄
FraAngelicoフラ・アンジェリコ프라 안젤리코
Fragonardフラゴナール후라고나루
Francescaピエロ・デラ・フランチェスカ피에로 델라 프란체스카
Friedrichフリードリッヒ프리드리히
Fuseliフュースリー퓨처 쓰리
Gainsboroughゲインズバラ게인 즈 버러
Gauguinゴーギャン고갱
Gelderヘルダー헤루다
Gentileジェンティーレ이방인
Gentileschiジェンティレスキ(父)제ン티레스키 (아버지)
Gerardジェラール제라드
Gericaultジェリコー제리코
Geromeジェローム제롬
Ghirlandaioギルランダイオ기루란다이오
Gillotジロ지로
Giorgioneジョルジョーネ조르지오 조치 네
Giottoジョット지오토
Giovanniジョヴァンニ・デ・パオロ죠반니 데 파올로
Girodetジロデ=トリオソン지로데 = 토리오손
Gleyreグレール구레루
Godwardガドワード가도와도
Goghゴッホ고흐
Gossaertヤン・ホッサールト얀 홋사루토
Gotchゴッチ곳찌
Goyaゴヤ고야
Goyenホイエン호이엔
Gozzoliゴッツォリ곳초리
Greuzeグルーズ구루즈
Grimshawグリムショー구리무 쇼
Grisファン・グリス팬 구리스
Grosグロ그로
Grunewaldグリューネヴァルト구류네 발트
Hackerアーサー・ハッカー아서 해커
Halsハルス할스
Houseboatハウスブーフ하우스부후
Hayezアイエツ아이에쯔
Hedaヘダ헤다
Heemデ・ヘーム데 헤무
Hiroshige広重히로시게
Hodlerホドラー호도라
Hokusai北斎호쿠사이
Holbeinホルバイン호루바인
Homerホーマー호머
Hoochデ・ホーホ데 호호
Hughesエドワード・ヒュース에드워드 휴스
HughesAアーサー・ヒュース아서 휴스
Huntハント헌트
Ingresアングル앵글
Jongkindヨンキント욘킨토
Jordaensヨルダーンス요루단스
Jouvenetジュブネ쥬부네
Khnopffクノップフ쿠놋뿌후
Kirchnerキルヒナー  키루히나
Kleeパウル・クレー파울 클레
Klimtクリムト클림트
Kramskoiクラムスコイ쿠라무스코이
LaFosseラ・フォッス라 호스
Lancretランクレ란쿠레
Largilleireラルジリエール라루지리에루
Larssonラルソン라르손
LaTourジョルジュ・ド・ラトゥール조르주 드 라투르
LaTourMラ・トゥール라 뚜르
Lautrecロートレック로트렉
Lebrunエリザベト・ヴィジェ・ルブラン엘리자베스 · 뷔제 · 르브란
Leightonレイトン레이튼
LeMoyneルモワール루모와루
LeNainル・ナン르 낭
Lepicieルピシェ루삐세
Leysterレイステル레이스테루
Limbourgランブール兄弟란부루 형제
Liotardリオタール리오타루
LipFilippinoフィリッピーノ휘릿 피노
lorenzettiロレンツェッティ(弟)로렌체티 (동생)
LorenzettiPロレンツェッティ(兄)로렌체티 (형)
Lottoロレンツォ・ロット로렌초 로트
Luiniルイーニ루이니
Mackeアウグスト・マッケ아우 구스트 맥케
MadoxBルーシー・M・ブラウン루시 M 브라운
Malevichマレーヴィッチ마레뷔찌
Manetマネ마네
Mantegnaマンテーニャ만테냐
Martiniシモーネ・マルテーネ시모네 마루테네
Masaccioマザッチョ마잣쵸
Masolinoマゾリーノ마조리노
Massysマッサイス맛사이스
Meissonierメッソニエ멧소니에
Memlingメムリンク메무린쿠
Mengsメングス멘구스
Menzelメンツェル멘젤
Messinaメッシーナ메시나
Meteyardメテヤード메테야도
Metsuメッツ메츠
Michelangeloミケランジェロ미켈란젤로
Mignardミニャール미냐루
Millaisミレイ미레이
Milletミレー밀레
Modiglianiアメデオ・モディリアーニ아메데오 모딜리아니
Monetモネ모네
Mooreアルバート・ムーア앨버트 무어
Moralesモラレス모랄레스
Moreauモロー모로
Morganモーガン모건
Morisotモリゾ모리조
muchaミュシャ무하
Murilloムリーリョ무리료
Osbornオズボーン오스본
Oudryウートリー우토리
Overbeckオーヴァーベック오버 벡
Palmerサミュエル・パーマー사무엘 파머
Parmigianinoパルミジャニーノ파르 미자 니노
Paterペイター뻬이타
Patinirパティニール파티 닐
Peetersペーテルス뻬테루스
Peredaペレーダ뻬레다
Peruginoペルジーノ뻬루지노
Pisanelloピサネッロ삐사넷로
Pompeiiポンペイ폼페이
Pontormoポントルモ뽄토루모
Potterポッター포터
Poussinプッサン풋산
Poynterポインター포인터
Prinsepプリンセップ뿌린셋뿌
Prudhonプリュードン뿌류돈
Puvisピュヴィス쀼뷔스
Rachレイチェル레이첼
Ramsayラムジー램지
Raffaelloラファエロ라파엘로
Redonルドン루돈
Rembrandtレンブラント렘브란트
Reniレニ레니
Renoirルノワール르느와르
Repinレーピン레삔
Restoutレストウ레스토우
Reynoldsレノルズ레노루즈
Rheamリーム드림
Riberaリベーラ리베라
Rigaudリゴー리고
Riveraリベラ리베라
Ropsロップス롯뿌스
Rossettiロセッティ로세티
Rousseauルソー루소
Rubensルーベンス루벤스
Rungeルンゲ룽게
Ruysdaelロイスダール로이스다루
RuysdaelSロイスダール로이스다루
Saeredamサーレンダム사렌다무
Sandysサンズ샌즈
Sargentサージェント사전트
Sartoデル・サルト델 사르테
Sassettaサセッタ사셋타
Schieleエゴン・シーレ에곤 실레
schwabeシュワーベ슈와베
Segaセガ세가
Seuratスーラー스라
shadシャッド상드
Shawビアム・ショー비아무 쇼
Signacシニャック시냑
SintJansシント・ヤンス세인트 · 얀스
Siraniシラーニ시라니
Sisleyシスレー시슬리
Sodomaソドマ소도마
Solomonソロモン솔로몬
Stanhopeスタナップ스타낫뿌
Steenヤン・ステーン얀 스텐
steinlenスタンラン스탄란
Stillmanスティルマン스틸 맨
Strudwickストラトウィック스트 랫 위크
Stubbsスタッブス스탓부스
stuckシュトゥック빨려드는
Subleyrasシュブレラス슈부레라스
Tademaアルマ・タデマ알마 타데마
TerBorchテルボルフ테루보루후
Tiepoloティエポロ티에뽀로
Tintorettoティントレット틴토 레토
Tissotティッソ티소
Titianティツィアーノ티치 아노
Tooropトーロップ토롯뿌
Turnerターナー터너
Uccelloウッチェロ웃체로
Valdesバルデス발데스
Vallottonヴァロットン봐롯톤
vanDyckヴァン・ダイク반 다이크
vanEyckファン・エイク팬 아케
Vedderヴェダー붸다
Velazquezベラスケス벨라 스 케스
Venezianoヴェネツィアーノ베네치아 노
Vermeerフェルメール베르메르
Veroneseヴェロネーゼ붸로네제
Verrocchioヴェロッキオ붸롯키오
Vouetヴーエ부에
Vuillardヴュイヤール부에이야루
Wallisウォリス월리스
Waterhouseウォーターハウス워터 하우스
Watteauヴァトー봐토
Wattsワッツ와츠
Westウエスト웨스트
Weydenファン・デル・ウェイデン판 데르 웨이덴
Whistlerホィッスラー호ィ스라
Wilkiウィルキィ위루키ィ
Wtewaelウィテウァール위테와루

2012年11月29日木曜日

OBBダウンロード ExpansionFile wifi is disbled


ExpansionFile wifi is disbled

拡張ファイルのダウンロードは、デフォルトではWIFIが有効になっている必要があります。
しかし、高速通信サービス(モバイルWIMAXやLTE)が普及しつつあるので、
WIFIが使用できないと追加ファイルがダウンロードできないというのは不便です。

FLAGS_DOWNLOAD_OVER_CELLULAR を設定すればいいのですが忘れがちです。

mRemoteService 。setDownloadFlags (IDownloaderService 。FLAGS_DOWNLOAD_OVER_CELLULAR );


そこでDownloaderServiceファイルを書き換えてWIFI使用に関係なくダウンロードするようにしました。

com.google.android.vending.expansion.downloader.impl;DownloaderServiceクラス
    public int getNetworkAvailabilityState(DownloadsDB db) {

         if (0 != (flags & FLAGS_DOWNLOAD_OVER_CELLULAR)) {
                return NETWORK_OK;



FLAGS_DOWNLOAD_OVER_CELLULARのIF文を無効にすればOKです。


2012年11月28日水曜日

conversion dalvik format failed error 1 export signed

conversion dalvik format failed error 1 export signed
以上のエラーメッセージにはまりました。

署名無しビルドは可能なのに署名付きビルドができなくなったときの解決方法。

conversion dalvik format failed error 1は大概はエクリプスのクリーンを行えば直ります。
それでも直らない場合はビルドパスが間違っている可能性があります。

今回、私はdownloader_library(APKファイル拡張)のプロパティに間違ってプロジェクト参照をしていました。

プロジェクト参照を削除してANDROIDバージョン側の参照にplay_licensingのライブラリパスを設定して直りました。

もう少しわかりやすいエラーメッセージだと助かるんですけどね。。
conversion dalvik format failed error 1が表示されたらクリーン起動かプロジェクトのプロパティのチェックです。

2012年9月16日日曜日

GPS発信器メール

無料アプリ、GPS発信機メールをリリースしました。
位置情報を定期的にメール送信するプログラムです。
近頃、誘拐犯罪のニュースが目につくので作成してみました。

日本では毎年10万人ほどが行方不明になっています。
その半数が数年で発見されますが、他の半数は自殺や事件に巻き込まれたものと考えられています。
義務教育期間以下の子供が行方不明になると、直ちに警察の捜索が開始継続されますが、高校生以上の年齢の場合は事件性が高くなければ捜索される事はありません。

子供の安全に確認に役立ててください。

※2012/11/30現在の仕様について

位置情報の正確性を重視するため、基地局の位置情報を使用しません。
基地局の位置情報を使用すると数百メートル単位のずれが生じ、
不正確な情報によって混乱を招く恐れがあるためです。
そのためGPSの電波が入らないと機能しません。

GPSの電波が入らない場合は待機状態になります。
GPSの電波が入りしだい再実行します。

当アプリが実行中の場合は、端末のGPS機能のオンオフと連動して動作します。
当アプリが停止中の場合は、端末のGPS機能のオンオフに関わらず動作を停止します。
GPSのスイッチと連動させる事で。当アプリの実行停止手順を簡略化しています。

当アプリは常駐サービスではありません。アンドロイドのタスクスケジューラーを使用しています。
必要なタイミングでのみ動作する事で、CPUやメモリの消費を抑えています。
他のアプリとの衝突によるプロセスの停止や電力消費を抑えるためです。

※2012/11/30現在の不具合

携帯の電波が受信できなく、GPSの電波が受信できる場合に、メールの送信に失敗し、再送信を行いません。
携帯の基地局が少ない地域でのみ発生すると思われます。

※今後の実装予定

メール送信失敗時の再送信
動作する時間帯の指定
バッテリー状態をメール本文に追加
基地局の位置情報を使用、この場合は不正確な情報であるとメール本文に明記

次回リリース日は未定です。



2012年9月8日土曜日

プリファレンス 簡易保存サンプル


文字列をプリファレンス 保存

プリファレンス機能を使う事で簡易情報記録ができます。
ちょっとした管理情報を記録するには便利ですが。
この情報はアプリを更新すると消えてしまうので注意が必要です。



数値をキーにして文字列の保存と読み取り

・読み取り
private String getPreStr(int inInt){
  String str="";
  try{
  SharedPreferences pref =
  getSharedPreferences("識別",MODE_PRIVATE);
  str = pref.getString(String.valueOf(inInt), "");//引数INTの番号をKEYにして読み取り なければ空文字

  }catch (Exception e){
   e.printStackTrace();
    Log.e("getPreStr","Null");
  }
   
return str;
 
 }
・書き込み
 private void setPreStr(int inInt ,String inStr){
  try{
  SharedPreferences pref =
  getSharedPreferences("識別",MODE_PRIVATE);
  Editor e = pref.edit();
  e.putString(String.valueOf(inInt), inStr);//引数INTの番号をKEYにして書き込み
  e.commit();
  }catch (Exception e) {
// TODO: handle exception
  e.printStackTrace();
  Log.e("setPreStr","null");
}
 
 }

ブロードキャストIntent 端末の動作を感知



端末の動作を感知してサービスを実行する

マニュフェストファイルに特定の動作を感知する情報を定義します

以下、例 action.BOOT_COMPLETED 端末の起動時に
testReceiver このクラスを関連付けて TestService を実行する。


ブロードキャストIntent(端末の動作)を受け取ってサービスを開始
・アプリケーションタグ (action.BOOT_COMPLETED端末が起動した場合)

<receiver android:name=".testReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
public class TestReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
            Intent serviceIntent = new Intent(context, TestService.class);
            context.startService(serviceIntent);
    }
}



・以下、端末のイベントの種類
ACTION_AIRPLANE_MODE_CHANGED ユーザーが内外に機内モードの携帯電話を切り替えています。
ACTION_ALL_APPS リストすべての使用可能なアプリケーションを入力。
ACTION_ANSWER 電話の着信を処理する。
ACTION_APP_ERROR ユーザーがクラッシュ/ ANRダイアログの "レポート"ボタンを押した。
ACTION_ASSIST アクションの実行を支援する。
ACTION_ATTACH_DATA データの一部がいくつかの他の場所に添付する必要があることを示すために使用します。
ACTION_BATTERY_CHANGED これはスティッキー放送充電状態、レベル、およびバッテリーに関するその他の情報が含まれている。
ACTION_BATTERY_LOW デバイス上のローバッテリ状態を示します。
ACTION_BATTERY_OKAY バッテリーがすぐに低くされた後も大丈夫であることを示します。
ACTION_BOOT_COMPLETED システムの起動が完了した後にこれは、かつて放送されています。
ACTION_BUG_REPORT バグを報告するための活発な動きを見せる。
ACTION_CALL データで指定された誰かへの呼び出しを実行します。
ACTION_CALL_BUTTON ユーザーが電話をかけるためにダイヤラまたは他の適切なUIに行くために "呼び出し"ボタンを押した。
ACTION_CAMERA_BUTTON "カメラボタン"が押されました。
ACTION_CHOOSER ユーザーが先に進む前に、彼らが望むものを選択できるように、活動の選択を表示します。
ACTION_CLOSE_SYSTEM_DIALOGS ユーザーアクションは却下する一時的なシステムダイアログを要求するべきであるときにブロードキャストされます。
ACTION_CONFIGURATION_CHANGED 現在のデバイス構成 (オリエンテーション、ロケールなど)が変更されました。
ACTION_CREATE_SHORTCUT ショートカットを作成します。
ACTION_DATE_CHANGED 日付が変更されました。
ACTION_DEFAULT の同義語ACTION_VIEW、データの一部で行われている"標準的な"アクション。
ACTION_DELETE そのコンテナから与えられたデータを削除します。
ACTION_DEVICE_STORAG E_LOW デバイス上のメモリ不足状態を示すスティッキー放送。これは、システムによってのみ送信することができ、保護目的である。
ACTION_DEVICE_STORAG E_OK デバイス上のメモリ不足状態がもはや存在しないことを示し。これは、システムによってのみ送信することができ、保護目的である。
ACTION_DIAL データで指定された番号をダイヤルします。
ACTION_DOCK_EVENT デバイスの物理的なドッキング状態の変化のためにスティッキ放送。
ACTION_EDIT 指定されたデータへの明示的な編集可能なアクセスを提供します。
ACTION_EXTERNAL_APPLICATIONS_AVAILABLE 彼らは存在しているメディアが使用可能であるためパッケージ(以前は利用できなかった)のセットのためのリソースは、現在入手可能である。
ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE 彼らは存在しているメディアが使用できないので、パッケージのセットのためのリソースは現在使用できません。
ACTION_FACTORY_TEST 工場出荷時のテスト用のメインエントリポイントです。
ACTION_GET_CONTENT ユーザーが、特定の種 類のデータを選択し、それを返すことができます。
ACTION_GTALK_SERVICE_CONNECTED GTalkの接続が確立されました。
ACTION_GTALK_SERVICE_DISCONNECTED GTalkの接続が切断されました。
ACTION_HEADSET_PLUG 有線ヘッドセットに接続したり抜いた。
ACTION_INPUT_METHOD_CHANGED 入力方法が変更されました。
ACTION_INSERT 指定された容器の中に空の項目を挿入します。
ACTION_INSERT_OR_EDIT 既存のアイテムを選択するか、新しいアイテムを挿入し、それを編集してください。
ACTION_INSTALL_PACKAGE 起動アプリケーションのインストーラ。
ACTION_LOCALE_CHANGED 現在のデバイスのロケールが変更されました。
ACTION_MAIN メインエントリポイントとして起動し、データを受け取ることを期待していません。
ACTION_MANAGE_NETWORK_USAGE 特定のアプリケーションのネットワーク・データの使用状況を管理するための設定の表示。
ACTION_MANAGE_PACKAGE_STORAG E メモリー不足の状態の通知は、ユーザーの確認とパッケージ管理が開始されるべきであることを示します。
ACTION_MEDIA_BAD_REMOVAL 外部メディアは、SDカードスロットから取り外されましたが、マウントポイントがアンマウントされていなかった。
ACTION_MEDIA_BUTTON "メディアボタン"が押されました。
ACTION_MEDIA_CHECKING 外部メディアが存在しており、点検メディア用のマウントポイントへのパスをディスクがチェックされているIntent.mDataフィールドに含まれています。
ACTION_MEDIA_EJECT ユーザは外部記憶メディアを削除する意向を表明しました。
ACTION_MEDIA_MOUNTED 外部メディアが存在し、そのマウントポイントにマウントされます。
ACTION_MEDIA_NOFS 外部メディアが存在していますが、互換性のないFSを使用している(または空白)をチェックメディアのマウントポイントへのパスはIntent.mDataフィールドに含まれています。
ACTION_MEDIA_REMOVED 外部メディアは削除されました。
ACTION_MEDIA_SCANNER_FINISHED メディアスキャナがディレクトリをスキャンし終えた。
ACTION_MEDIA_SCANNER_SCAN_FILE ファイルをスキャンし、メディアデータベースに追加するには、メディアスキャナーを要求します。
ACTION_MEDIA_SCANNER_STARTED メディアスキャナがディレクトリをスキャンし始めている。
ACTION_MEDIA_SHARED それはUSBマスストレージを介して共有されているので、外部メディアのマウントが解除されます。
ACTION_MEDIA_UNMOUNTABLE 外部メディアが存在するが、マウントできません。
ACTION_MEDIA_UNMOUNTED 外部メディアが存在していますが、そのマウントポイントにマウントされていない。
ACTION_MY_PACKAGE_REPLACED アプリケーションの新しいバージョンは、既存のいずれかの上にインストールされています。
ACTION_NEW_OUTGOING_CALL 発信コールが置かれようとしています。
ACTION_PACKAGE_ADDED 新しいアプリケーションパッケージは、デバイスにインストールされました。
ACTION_PACKAGE_CHANGED 既存のアプリケーション・パッケージが変更されている(例えば、
ACTION_PACKAGE_DATA_CLEARED ユーザーがパッケージのデータをクリアしています。
ACTION_PACKAGE_FIRST_LAUNCH そのアプリケーションが最初に起動されたアプリケーションのインストーラパッケージに送信され(それが初めてですが、停止状態から移動されています)。
ACTION_PACKAGE_FULLY_REMOVED 既存のアプリケーションパッケージは完全にデバイスから削除されました。
ACTION_PACKAGE_INSTALL この定数は、廃止されています。この定数は使われてこなかった。
ACTION_PACKAGE_NEEDS_VERIFICATION パッケージは検証する必要があるときにシステムパッケージ検証者に送信されます。
ACTION_PACKAGE_REMOVED 既存のアプリケーションパッケージがデバイスから削除されました。
ACTION_PACKAGE_REPLACED アプリケーションパッケージの新しいバージョンがすでにインストールされていた既存のバージョンを置き換えて、インストールされています。
ACTION_PACKAGE_RESTARTED ユーザーは、パッケージを再起動しており、そのすべてのプロセスが強制終了された。
ACTION_PASTE クリップボードの現在の内容から、それを初期化し、指定したコンテナに新しい項目を作成します。
ACTION_PICK 選択したものを返す、データから項目を選んでください。
ACTION_PICK_ACTIVITY クラスが選択され帰国、意図特定のアクティビティを選択します。
ACTION_POWER_CONNECTED 外部電源がデバイスに接続されています。
ACTION_POWER_DISCONNECTED 外部電源はデバイスから削除されました。
ACTION_POWER_USAGE_SUMMARY ユーザーに表示する電力使用状況情報を表示します。
ACTION_PROVIDER_CHANGED 一部のコンテンツプロバイダが、彼らは、ユーザーが特に興味のあることが、新しいイベントやアイテムを公開する自分の名前空間の部分を持って
ACTION_REBOOT デバイスの再起動を持ちなさい。
ACTION_RUN どんなことを意味し、データを実行します。
ACTION_SCREEN_OFF 画面がオフになった後に送信されます。
ACTION_SCREEN_ON 画面がオンになった後に送信されます。
ACTION_SEARCH 検索を実行します。
ACTION_SEARCH_LONG_PRESS 長い検索キーを押すと関連付けスタートアクション。
ACTION_SEND 他の誰かにいくつかのデータを配信します。
ACTION_SENDTO データで指定された誰かにメッセージを送信します。
ACTION_SEND_MULTIPLE 他の誰かに、複数のデータを配信します。
ACTION_SET_WALLPAPER なし。
ACTION_SHUTDOWN デバイスをシャットダウンしています。
ACTION_SYNC データの同期を実行します。
ACTION_SYSTEM_TUTORIAL getStringExtraは(SearchManager.QUERY) を検索するためのテキストです。
ACTION_TIMEZONE_CHANGED タイムゾーンが変更されました。
ACTION_TIME_CHANGED 時刻が設定されていました。
ACTION_TIME_TICK 現在の時刻が変更されました。
ACTION_UID_REMOVED ユーザーIDがシステムから削除されました。
ACTION_UMS_CONNECTED この定数は、廃止されています。android.os.storage.StorageEventListenerに置き換え
ACTION_UMS_DISCONNECTED この定数は、廃止されています。android.os.storage.StorageEventListenerに置き換え
ACTION_UNINSTALL_PACKAGE 起動アプリケーションのアンインストーラ。
ACTION_USER_PRESENT デバイスがウェイクアップした後にユーザーが存在しているとき(keyguardがなくなっている場合など)に送信されます。
ACTION_VIEW ユーザーにデータを表示します。
ACTION_VOICE_COMMAND スタート音声コマンド。
ACTION_WALLPAPER_CHANGED この定数は、廃止されています。最近のアプリケーションでは使用すべき WindowManager.LayoutParams.FLAG_SHOW_WALLPAPERをむしろこの放送のために見て、自分で壁紙をレンダリングするのではなく、そのUIの背後に示すように壁紙を持っている。
ACTION_WEB_SEARCH ウェブ検索を実行します。