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をかるく越えることが・・・

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




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

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

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