Get Last Call Duration in android

后端 未结 9 1598
北荒
北荒 2020-12-03 15:20

I am looking for an easiest way to get call duration of last dialed number. So for e.g if I have made a call to my mom once I cut the call a notification with the duration s

9条回答
  •  醉话见心
    2020-12-03 15:52

    Here is code for getting the last call duration.Try it,it works. The last call duration is fetched from the call logs.

      public void getCallLog() {
        StringBuffer sb = new StringBuffer();
        Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, null,  null);
        int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
        int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
        int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
        int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
        sb.append("Call Details :");
        Log.e("total count", "" + managedCursor.getCount());
        //managedCursor.moveToPosition(managedCursor.getCount() - 1);
        int currentCount = 0, lastPosition = 0;
        while (managedCursor.moveToNext()) {
            currentCount++;
            //managedCursor.moveToPosition(managedCursor.getCount() - 1);
            String phNumber = managedCursor.getString(number);
            String callType = managedCursor.getString(type);
            String callDate = managedCursor.getString(date);
            Date callDayTime = new Date(Long.valueOf(callDate));
            String callDuration = managedCursor.getString(duration);
            String dir = null;
            int dircode = Integer.parseInt(callType);
    
    
            switch (dircode) {
    
                case CallLog.Calls.OUTGOING_TYPE:
                  //  lastPosition = currentCount;
                    dir = "OUTGOING";
                    break;
    
                case CallLog.Calls.INCOMING_TYPE:
                    dir = "INCOMING";
                    break;
    
                case CallLog.Calls.MISSED_TYPE:
                    dir = "MISSED";
                    break;
    
            }
            lastPosition = currentCount;
            sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration);
            sb.append("\n----------------------------------");
            Log.e("test", sb.toString());
        }
    
        lastPosition--;
        managedCursor.moveToPosition(lastPosition);
        int requiredNumber = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
        int durations = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
        String phNumber = managedCursor.getString(requiredNumber);
        String dur = managedCursor.getString(durations);
    
        textView.setText(phNumber);
        textDuration.setText(dur);
        Log.e("last position number ", phNumber);
        Log.e("last call Duration ", dur);
        managedCursor.close();
    }
    

提交回复
热议问题