中谷様
回答ありがとうございます。
Nexus5では通話時間を取得できるのですね…!
私はGALAXY NEXUSで試していたのですが、標準アプリの通話ログで時間が取得出来て、自作アプリの方で取得できない、という状況でした。
取得には『CallLog.calls』を使っています。
最初の投稿する前に、このクラスを調べていたのですが、標準アプリがここに通話ログを保存してるっぽい? ぐらいしか自分には理解できず、取得してる場所が違う? まではわかりませんでした。
自作アプリのソースコードを遅ればせながら載せておきます。
通話切断を確認した後、Receiverを呼び出してこの動作をさせています。
// 通話関係のデータを呼び出す
String order = CallLog.Calls.DEFAULT_SORT_ORDER;
Cursor cursor = contentResolver.query(
CallLog.Calls.CONTENT_URI,
null,
null,
null,
order
);
if (cursor.moveToFirst()){
Date maxDate = new Date(0000000000);
do {
// 通話の日付取得
Date date = new Date(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)));
// 取得したのがより新しいデータなのか
if(date.after(maxDate)){
// その時の通話タイプと通話時間を取得
maxDate = date;
type = cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE));
callTime = cursor.getString(cursor.getColumnIndex(CallLog.Calls.DURATION));
}
} while(cursor.moveToNext());
}
// 最新のログが発信で、通話時間が0秒(不在)ではなかったら
if(type.equals("2") && !callTime.equals("0")){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = pref.edit();
int callCount = pref.getInt(ResetDialog.COUNT_INT_KEY, ResetDialog.COUNT_DEFAULT);
// 内部データの通話回数記録に 1 をプラスする
editor.putInt(ResetDialog.COUNT_INT_KEY, callCount + 1);
editor.commit();
}
}
2013年12月4日水曜日 15時16分09秒 UTC+9 katsuki nakatani: