2012年1月30日月曜日

通話履歴 S(Call History Simple) ver.3.0.0

version 3.0.0
デフォルトに設定できるようにしました。
このアプリで、未確認の不在着信を確認済みにするようにしました。
通知を消去できます(Android2.2まで、2.3以降は通知を消去できません。)
電話帳の名前が変更されていたら、通話履歴のデータベースを変更するようにしました。

内部の処理方法を大幅に変更しました。

2012年1月26日木曜日

標準の通話履歴

今更ながら、androidのデフォルト通話履歴アプリのコードを見てみた。

理解不能な箇所がいっぱい><勉強不足ですね・・・

まあ、非公式なクラスを使ったりしてるんで 余計にわかりません。

が!わかったこともあります。

コールログデータベースの書き直し
 ログデータの電話番号から電話帳を検索
 名前・ラベル・電話種別のどれかが 電話帳データと違っていたら コールログデータベースを電話帳のデータに書き直す。CACHED_NAMEとCACHED_NAMBER_TYPEとCACHED_NUMBER_LABELですね・・・そう、CACHEDと付いてる意味がそうゆうことなのね。

データベースのクエリーをAsyncQueryHandlerを使ってた。非同期のバックグランド処理ですね。

Viewが表示されたら、未確認の不在着信を確認済みにしてた。

通知領域の不在通知を消去してた。非公開のクラスだった・・・

ということで、ただいま私のアプリも 同じことができるように改造中です。

通知領域の不在通知を消すのは、リフレクションでできるんですが・・・これをするには、MODIFY_PHONE_STATEが必要みたいです。このパーミッションAndroid2.3以降はユーザーアプリでは 使えなくなったので、不在通知を消すことができません。
それに・・・Aindroid2.3からは、通知を消去するボタンで未確認を確認済みにもしてくれません。困ったもんです!

今度のバージョンアップでデフォルトに設定できるようにするんですが、上記理由により未確認を確認済みにするには、通話履歴を見てその後通知を消去するで 消去という2度手間になります。
なんで、2.3以降の人はデフォルトに設定しないほうがいいかも・・・

2012年1月9日月曜日

通話履歴 S(Call History Simple) ver.2.1.2

version 2.1.2
ListViewでのNullPointerエラーの原因がわからないので、いろいろ試しております。
自分の実機では、まったくそのエラーがでないので どうすればいいのやら・・・

ググってみると adapterをカスタマイズしてgetViewをオーバーライドすればいいってなってるけど、もともとそうしてるし><
今回したのは、getView内のStringがNullの場合処理です。
通話履歴で名前と番号がStringなんだけど、普通で考えると両方Nullはありえない。
が!!!、もしかしたらあるかもしれんと・・・最近 通話無料になるアプリあるし・・・

たぶん、考え方の方向を間違ってるんだろうな 俺・・・

2012年1月6日金曜日

通話履歴 S(Call History Simple) ver.2.1.1

version 2.1.1
 フリック操作でのタブ切替をした場合の画面移行にアニメーションを追加。
 アイテムクリック・ロングクリック時のダイアログにキャンセルボタンを追加。
 強制終了していると思われる箇所を対策。(試験運用)

2011年12月27日火曜日

通話履歴 S(Call History Simple) ver.2.0.0

version 2.0.0
 不在着信時の呼出時間表示に対応
 発着信タブを直接呼び出すWidgetボタンを廃止(ショートカットはそのまま使用できます)


今回のバージョンアップで、不在着信の呼出時間を表示できるようになりました。
[設定]の[通話/呼出(不在時)時間を表示する]をOnにしてください。
今回のバージョンをインストールしてからの不在着信に対応しています。

処理内容的には、バックグランドで着信状態を監視し不在着信の場合は独自のデータベースに呼出時間等を保存しています。バックグランド処理をしていますのでタスクをKILLしないように設定してください。

以下の場合取得を失敗する可能性があります。
・タスクがKILLしてしまいバックグランド処理がされていない。
・システムの着信時間と当アプリで取得した着信時間に大きなズレ(0.5秒以上)がある場合。
・グループ着信及び、割込通話の場合。

取得を失敗した場合は、*印が表示されます。

2011年12月20日火曜日

不在着信時の呼出時間表示

不在着信時の呼出時間を表示しようかと、悪戦苦闘しております。(すでに、あきらめモードですが・・・

発着信の履歴ってのはandroidが標準でもってるデータベースがあります。

ほとんどの通話履歴のアプリは、このデータベースを使用してると思います。

しかしながら、このデータベースには呼出時間は保存されておりません。(通話時間は保存されてます)

なので、呼出時間を表示させるには独自に保存しなければなりません。

となると、呼出を検地して通話の判別をし不在着信の場合、その時間を取得するプログラムが必要になります。
もちろん、常時監視しないとだめなんでサービスでの実装となります。

簡単そうですね・・・これだけの処理なら簡単です。

PhoneStateListenerという便利なクラスがあり、電話機の状態が変化すると呼び出されるからね。

上記だけの判断なら
 CALLING-OFFHOOK-IDLE 通話
 CALLING-IDLE          不在

これは、単独で電話がかかってきた時だけですね。

実はエミュレターでシュミレーションを行うと、単独通話、グループ通話、割込み通話ができるんです。

実機でも、グループはできそうにないけど割込み通話はできますよね。

まあ、ここらはいろいろやってみるとどうなるかはわかるかな・・・

あと、実機では終話ボタンの挙動が各メーカーによって違いそうです。

終話ボタンで切った場合、不在にするかどうかもメーカーによって違うみたい。

次に、andoroidの通話履歴データベースの着信時間とこちらが作成したアプリでの着信時間にずれが生じます。

まあ、当たり前なんですけど めんどくさいです。

時間のずれは、エミュレーターだと 10ms以内でしたが 実機だと 100msをかるく越えることが・・・

これは、たぶんスマフォの処理速度で変わって来るでしょ・・・




なんだかんだと、いろいろめんどくさいんです><

できるだけ、取得できるようにしてみたんですが今テスト中です。

とりあえず、バグで強制終了とかがなければ 近いうちにバージョンアップさせます。

2011年11月16日水曜日

通話履歴アプリの有料版

作成当初は、有料版はつくらない予定だったのですが、有料版がほしいとの意見がありましたので作りました。

価格は、200円です(150円でも、よかったんですが他の方が200円にしてたので相場を下げたら悪いかなと・・・

たぶん、そんなに売れないと思いますが ご購入される方は、まず無料版を使用してからに してくださいね。

無料版で、エラーがいくつか残ってるんで不安なんです。けど何をしたらエラーになってるのかがわからず・・・><

そんな、状態での有料版なんで ご了承ください。

エラーが出た場合 ここへのコメントか直接メールいただければ すごく助かります。

ご面倒をかけますが、よろしくお願いいたします。


広告ライブラリーが更新されてましたので、無料版も近々UP予定です。(内容はかわってません)
有料版の紹介をメニューに加えるくらい・・・

無料版での 不在着信が消えないとコメントがありましたが、たぶんacro側のバグか仕様みたいです。(通知を消去すると 不在着信のフラグがたったままになってまして、acroのディフォルトの履歴で確認すると消えてました。あと、acroのアップデートの内容の中に不在着信になる不具合があるの修正しましたと あったので、たぶんそうじゃないかと思います)