Получить час звонка от Android CallLog - PullRequest
0 голосов
/ 11 ноября 2010

Эй, я хочу узнать время звонка из Android CallLog. Это именно тот час, когда пользователь начинает вызов и, если возможно, когда он заканчивает вызов. Кто-то знает как?

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Вот полное решение (хотя и не проверено) - просто схема:

public void logCallLog(String number)
{
    long dialed;
    String columns[]=new String[] {
            CallLog.Calls._ID, 
            CallLog.Calls.NUMBER, 
            CallLog.Calls.DATE, 
            CallLog.Calls.DURATION, 
            CallLog.Calls.TYPE};
    String args[]=new String[1];
    args[0]=number;
    Cursor c;
    c = this.managedQuery(Uri.parse("content://call_log/calls"),
            columns, CallLog.Calls.NUMBER+"=?", args, "Calls._ID DESC"); //last record first
    while (c.moveToNext())
    {
        dialed=c.getLong(c.getColumnIndex(CallLog.Calls.DATE));
        Log.i("CallLog", "Call to number: "+number+", registered at: "+new Date(dialed).toString());
    }
}
0 голосов
/ 26 сентября 2015

Сосредоточенный на исходном вопросе, это решение, основанное на @ barmaley's:

public void logCallLog(String number)
{
    long dialed;
    String columns[]=new String[] {
            CallLog.Calls._ID, 
            CallLog.Calls.NUMBER, 
            CallLog.Calls.DATE, 
            CallLog.Calls.DURATION, 
            CallLog.Calls.TYPE};
    String args[]=new String[1];
    args[0]=number;
    Cursor c;
    c = this.managedQuery(Uri.parse("content://call_log/calls"), columns, CallLog.Calls.NUMBER+"=?", args, "Calls._ID DESC"); //last record first
    while (c.moveToNext())
    {
        int duration = c.getInt(c.getColumnIndex(CallLog.Calls.DURATION));// for duration in seconds            
        dialed=c.getLong(c.getColumnIndex(CallLog.Calls.DATE));
        GregorianCalendar callStart = new GregorianCalendar();
        callStart.setTimeInMillis(dialed);
        int hstart = callStart.get(GregorianCalendar.HOUR_OF_DAY);

        //using callStart and duration you can calculate the end hour:
        dialed += duration+1000;
        GregorianCalendar callEnd = new GregorianCalendar();
        callEnd.setTimeInMillis(dialed);
        int hend = callEnd.get(GregorianCalendar.HOUR_OF_DAY);

        Log.i("CallLog", String.format("Start:%d End:%d", hstart, hend));
    }
}
...