我希望在开始呼叫切换的持续时间后呼叫参加以获得总持续时间

时间:2014-10-11 10:53:15

标签: android eclipse

我希望获得此代码的正确持续时间我得到此代码使用的持续时间但当我调用动作启动示例拨出呼叫当我呼叫按钮时单击以启动时间也是当我呼叫切断过程以获得持续时间总持续时间但我希望当电话参加时开始停止呼叫的持续时间获得正确的持续时间如何获得我的代码

//public class CallDurationReceiver extends BroadcastReceiver {
DatabaseHandler db;

// instance variables of sharedpreferences
SharedPreferences mSharedPrefernce;
Editor e;

// String variables for number,date,time,calltype
String number = "";
String date = "";
String time = "";
String calltype = "";
String totime = "";
long startTime, endTime;

CounterClass timer = new CounterClass(180000,1000);

String hms;
@Override
public void onReceive(final Context context, Intent intent) {
    db = new DatabaseHandler(context);



   // Log.v("info", "calls info....");

    // initialising the sharedpreferences
    mSharedPrefernce = context.getSharedPreferences("MyPref", 0);
    e = mSharedPrefernce.edit();

    Bundle bundle = intent.getExtras();
    if (bundle == null)
        return;

    // initialising the variables
    number = null;
    startTime = 0;
    endTime = 0;

    // getting incoming call details
    String state = bundle.getString(TelephonyManager.EXTRA_STATE);
    if ((state != null)
            && (state
                    .equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))) {

       // Log.v("info", "Phone Ringing..");

        number = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
       // Log.v("info", "Incomng Number: " + number);

        calltype = "Incoming";

        Time today = new Time(Time.getCurrentTimezone());
        today.setToNow();

        date = today.monthDay + "-" + (today.month + 1) + "-" + today.year;
        time = today.format("%k:%M:%S");

        // putting the values into the SharedPreferences
        e.putString("number", number);
        e.putString("Type", calltype);
        e.putString("date", date);
        e.putString("time", time);
        e.commit();
        db.addContact(new PhoneNumberDetails(number,date,time,null,calltype));
        Toast.makeText(context,"Detect Calls sample application\nIncoming number: "+ number, Toast.LENGTH_SHORT).show();
        db.addContact(new PhoneNumberDetails(number, date, time, "duration", calltype));
    }
    // getting outgoing call details
    else if (state == null) {
        number = bundle.getString(Intent.EXTRA_PHONE_NUMBER);

       // Log.v("info", "Outgoing Number: " + number);

        calltype = "Outgoing";

        Time today = new Time(Time.getCurrentTimezone());
        today.setToNow();

        date = today.monthDay + "-" + (today.month + 1) + "-" + today.year;
       // Log.v("date Info","date:" + date);

        time = today.format("%k:%M:%S");
        Log.v("time Info","time:" + time);

        // putting the values into the SharedPreferences
        e.putString("number", number);
        e.putString("Type", calltype);
        e.putString("date", date);
        e.putString("time", time);
        e.commit();

        Toast.makeText(context,"Detect Calls sample application\nOutgoing number: "+ number, Toast.LENGTH_SHORT).show();
       //db.addContact(new PhoneNumberDetails(number, date, time, "totime",calltype));

    }
    // called when the call is answered
    else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
        Log.v("info", "Call Ansered..");

        timer.start();

        startTime = System.currentTimeMillis();
        e.putLong("start", startTime);
        e.commit();

    } 
    // called when the call is ended
    else if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_IDLE)) {
        Log.v("info", "Call Ended..");

        timer.cancel();

        Log.v("Time", ""+hms);

        Toast.makeText(context, hms, Toast.LENGTH_LONG).show();

        String phonenumber=null, type=null, date1=null, time1=null,  duration=null;

        // getting the values from the SharedPreferences
        phonenumber = mSharedPrefernce.getString("number","");
        type = mSharedPrefernce.getString("Type", "");
        date1 = mSharedPrefernce.getString("date", "");
        time1 = mSharedPrefernce.getString("time", "");
        long start=0;
        start = mSharedPrefernce.getLong("start", 0);
        Log.v("info", "startTime=" + start);

        // clearing the SharedPreferences
        mSharedPrefernce.edit().clear();

        endTime = System.currentTimeMillis();
        Log.v("info", "endTime=" + endTime);
        long totalTime =0;
        totalTime = endTime - start;
        String totime=Long.toString(0); 
        long result=Long.parseLong(totime);
        DateFormat df = new SimpleDateFormat("HH':'mm':'ss");
        df.setTimeZone(TimeZone.getTimeZone("GMT+0"));

        duration = df.format(new Date(totalTime));


       db.addContact(new PhoneNumberDetails(phonenumber, date1, time1, duration, type));

       System.out.println("GOT SOMETHING - "+phonenumber + " " + date1 + " " + time1 + " " + duration + " " + type);

        Log.d("testing","" +phonenumber);

        Toast.makeText(context, phonenumber + " " + date1 + " " + time1 + " " + duration + " " + type, Toast.LENGTH_LONG).show();


    }

}

public class CounterClass extends CountDownTimer {  
     public CounterClass(long millisInFuture, long countDownInterval) {  
          super(millisInFuture, countDownInterval);  
     }  
     @Override  
    public void onFinish() {  

    }  

     @TargetApi(Build.VERSION_CODES.GINGERBREAD)
    @Override  
     public void onTick(long millisUntilFinished) {  
           long millis = millisUntilFinished;  
            hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),  
                TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),  
                TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));  
            System.out.println(hms);  
            Log.v("Timing", hms);
     }  
}

}

0 个答案:

没有答案