Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中获取通话时间?还有在文件中多次写入数据?_Android - Fatal编程技术网

如何在android中获取通话时间?还有在文件中多次写入数据?

如何在android中获取通话时间?还有在文件中多次写入数据?,android,Android,我可以回答你问题的第一部分 要获取通话持续时间,访问通话日志非常重要 使用中给出的信息,可以按如下方式进行: public void onCallStateChanged(int state,String incomingNumber) { System.out.print("\nState :- "+state); switch(state){ case TelephonyManager.CALL_STATE_IDLE: if(

我可以回答你问题的第一部分

要获取通话持续时间,访问
通话日志
非常重要

使用中给出的信息,可以按如下方式进行:

 public void onCallStateChanged(int state,String incomingNumber)
{
    System.out.print("\nState :-  "+state);
      switch(state){
        case TelephonyManager.CALL_STATE_IDLE:

            if(flag==true && ringflag == true)
            {
                flag=false;
                ringflag=false;
                System.out.print("\nflag = " + flag);
                System.out.print("\nringflag = " + ringflag);
                stop = System.currentTimeMillis();
                System.out.println("\nTotal time : " +stop);
                System.out.println("\nTotal time : " +(stop - start)/1000);
                System.out.println("\nIDLE : " + incomingNumber);
                long time = (stop - start) / 1000;
                String path = Environment.getExternalStorageDirectory().getAbsolutePath();
                f = new File(path + "/sms.txt");
                if (f.exists()) {
                    try {
                        raf =new RandomAccessFile(f, "rw");
                        long pointer = raf.length();
                        raf.seek(pointer);
                        String data = ":-"+no+","+time;
                        raf.writeBytes(data);
                        raf.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                } else {
                    try {
                        raf = new RandomAccessFile(f,"rw");
                        String data = ":-"+no+","+time;
                        raf.writeBytes(data);
                        raf.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
            if(ringflag == true)
            {
                System.out.println("OFFHOOK :- " + incomingNumber);
                start = System.currentTimeMillis();
                System.out.print("\nStart is :-" + start);
                flag=true;
            }
        break;
        case TelephonyManager.CALL_STATE_RINGING:
            no = incomingNumber;
            System.out.println("Ringing : " + incomingNumber);
            ringflag= true;
        break;
      }
  }
有关更多信息,请参阅此链接

          Uri allCalls = Uri.parse("content://call_log/calls");
          Cursor c = managedQuery(allCalls, null, null, null, null);
            for(String colName : c.getColumnNames())
                Log.v(TAG, "Column Name: " + colName);

            if (c.moveToFirst())
            {
               do{
                   String id = c.getString(c.getColumnIndex(CallLog.Calls._ID));
                   String num = c.getString(c.getColumnIndex(CallLog.Calls.NUMBER));
                   int type = Integer.parseInt(c.getString(c.getColumnIndex(CallLog.Calls.TYPE)));

                   String duration = c.getString(c.getColumnIndex(CallLog.Calls.DURATION));
                   System.out.println("call time duration is"+duration);

                    switch (type)
                    {
                        case 1: Log.v(TAG, id + ", " +num + ": INCOMING") ; break;
                        case 2: Log.v(TAG, id + ", " +num + ": OUTGOING") ;break;
                        case 3: Log.v(TAG, id + ", " +num + ": MISSED") ; break;
                    }
               } while (c.moveToNext());
            }