Android Open Source - rfcx-guardian-android Api Core






From Project

Back to project page rfcx-guardian-android.

License

The source code is released under:

Apache License

If you think the Android project rfcx-guardian-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.rfcx.guardian.api;
/*from   w  ww  .jav a2 s  . c  om*/
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.zip.GZIPOutputStream;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.rfcx.guardian.RfcxGuardian;
import org.rfcx.guardian.utility.DateTimeUtils;
import org.rfcx.guardian.utility.FileUtils;

import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;

public class ApiCore {

  private static final String TAG = ApiCore.class.getSimpleName();
  private static final String NULL_EXC = "Exception thrown, but exception itself is null.";

  private RfcxGuardian app = null;
  
  //public long signalSearchStartTime = 0;
  private DateTimeUtils dateTimeUtils = new DateTimeUtils();
  private Calendar requestSendStart = Calendar.getInstance();
  
  private String lastCheckInId = null;
  private long lastCheckInDuration = 0;
  
  private static final int MAX_FAILED_CHECKINS = 3;
  private int recentFailedCheckins = 0;
  
  public void sendCheckIn(RfcxGuardian rfcxApp) {
    this.app = rfcxApp;
    if (app.isConnected) {
      app.triggerService("ApiCheckIn", true);
    } else {
      Log.d(TAG,"No connectivity... Skipping CheckIn attempt");
    }
  }
  
  public String getCheckInUrl() {
    return app.getPref("api_domain")+"/v1/guardians/"+app.getDeviceId()+"/checkins";
  }
  
  public String getCheckInJson() {
    
    String[] vBattery = app.deviceStateDb.dbBattery.getStatsSummary();
    String[] vBatteryTemp = app.deviceStateDb.dbBatteryTemperature.getStatsSummary();
    String[] vCpu = app.deviceStateDb.dbCpu.getStatsSummary();
    String[] vCpuClock = app.deviceStateDb.dbCpuClock.getStatsSummary();
    String[] vLight = app.deviceStateDb.dbLight.getStatsSummary();
    String[] vNetworkSearch = app.deviceStateDb.dbNetworkSearch.getStatsSummary();

    JSONObject json = new JSONObject();
    
    json.put("battery_percent", (vBattery[0] != "0") ? vBattery[4] : null);
    json.put("battery_temperature", (vBatteryTemp[0] != "0") ? vBatteryTemp[4] : null);
    json.put("cpu_percent", (vCpu[0] != "0") ? vCpu[4] : null);
    json.put("cpu_clock", (vCpuClock[0] != "0") ? vCpuClock[4] : null);
    json.put("internal_luminosity", (vLight[0] != "0") ? vLight[4] : null);
    json.put("network_search_time", (vNetworkSearch[0] != "0") ? vNetworkSearch[4] : null);
    json.put("has_power", (!app.deviceState.isBatteryDisCharging()) ? new Boolean(true) : new Boolean(false));
    json.put("is_charged", (app.deviceState.isBatteryCharged()) ? new Boolean(true) : new Boolean(false));
    json.put("measured_at", dateTimeUtils.getDateTime(Calendar.getInstance().getTime()));
    json.put("software_version", app.version);
    json.put("messages", app.smsDb.dbSms.getSerializedSmsAll());
    
    json.put("last_checkin_id", (this.lastCheckInId != null) ? this.lastCheckInId : null);
    json.put("last_checkin_duration", (this.lastCheckInId != null) ? new Long(this.lastCheckInDuration) : null);
    
    List<String[]> encodedAudio = app.audioDb.dbEncoded.getAllEncoded();
    List<String> audioFiles = new ArrayList<String>();
    for (String[] audioEntry : encodedAudio) {      
      String filePath = app.audioCore.wavDir.substring(0,app.audioCore.wavDir.lastIndexOf("/"))+"/"+audioEntry[2]+"/"+audioEntry[1]+"."+audioEntry[2];
      try {
        if ((new File(filePath)).exists()) {
          audioFiles.add(TextUtils.join("*", audioEntry));
        } else if (app.verboseLog) {
          Log.d(TAG, "Audio didn't exist: "+audioEntry[1]+"."+audioEntry[2]);
        }
      } catch (Exception e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      }
    }
    json.put("audio", TextUtils.join("|", audioFiles));
    
    this.requestSendStart = Calendar.getInstance();
    
    if (app.verboseLog) { Log.d(TAG, json.toJSONString()); }
    
    return json.toJSONString();
  }
  
  public void processCheckIn(String checkInResponse) {
  
    //  resetTransmissionState();
    Date clearDataBefore = this.requestSendStart.getTime();
  
    app.deviceStateDb.dbBattery.clearStatsBefore(clearDataBefore);
    app.deviceStateDb.dbCpu.clearStatsBefore(clearDataBefore);
    app.deviceStateDb.dbCpuClock.clearStatsBefore(clearDataBefore);
    app.deviceStateDb.dbLight.clearStatsBefore(clearDataBefore);
    app.deviceStateDb.dbBatteryTemperature.clearStatsBefore(clearDataBefore);
    app.deviceStateDb.dbNetworkSearch.clearStatsBefore(clearDataBefore);
    
    app.smsDb.dbSms.clearSmsBefore(clearDataBefore);
    app.audioCore.purgeEncodedAssetsUpTo(app.audioDb, clearDataBefore);

    if ((checkInResponse != null) && !checkInResponse.isEmpty()) {
      try {
        JSONObject responseJson = (JSONObject) (new JSONParser()).parse(checkInResponse);
        Log.d(TAG,responseJson.toJSONString());
        this.lastCheckInId = responseJson.get("checkin_id").toString();
        this.lastCheckInDuration = Calendar.getInstance().getTimeInMillis() - this.requestSendStart.getTimeInMillis();
      } catch (org.json.simple.parser.ParseException e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      } catch (Exception e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      } finally {
        if (app.verboseLog) Log.d(TAG, "API Response: " + checkInResponse);
      }
    }
  }      
  

  public List<String[]> getCheckInFiles() {
    List<String[]> encodedAudio = app.audioDb.dbEncoded.getAllEncoded();
    List<String[]> checkInFiles = new ArrayList<String[]>();
    for (String[] audioEntry : encodedAudio) {
      String filePath = app.audioCore.wavDir.substring(0,app.audioCore.wavDir.lastIndexOf("/"))+"/"+audioEntry[2]+"/"+audioEntry[1]+"."+audioEntry[2];
      try {
        if ((new File(filePath)).exists()) {
          checkInFiles.add(new String[] {"audio", filePath, "audio/"+audioEntry[2]});
          if (app.verboseLog) { Log.d(TAG, "Audio added: "+audioEntry[1]+"."+audioEntry[2]); }
        } else if (app.verboseLog) {
          Log.d(TAG, "Audio didn't exist: "+audioEntry[1]+"."+audioEntry[2]);
        }
      } catch (Exception e) {
        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
      }
    }
    return checkInFiles;
  }
  
  
//  private byte[] gZipString(String s) {
//    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//    GZIPOutputStream gZIPOutputStream = null;
//    try {
//      gZIPOutputStream = new GZIPOutputStream(byteArrayOutputStream);
//      gZIPOutputStream.write(s.getBytes("UTF-8"));
//    } catch (IOException e) {
//      Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
//    } finally { if (gZIPOutputStream != null) {
//      try { gZIPOutputStream.close();
//      } catch (IOException e) {
//        Log.e(TAG,(e!=null) ? (e.getMessage() +" ||| "+ TextUtils.join(" | ", e.getStackTrace())) : NULL_EXC);
//      };
//    } }
//    return byteArrayOutputStream.toByteArray();
//  }
//  

  
}




Java Source Code List

net.sourceforge.javaFlacEncoder.ArrayRecycler.java
net.sourceforge.javaFlacEncoder.BlockEncodeRequest.java
net.sourceforge.javaFlacEncoder.BlockThreadManager.java
net.sourceforge.javaFlacEncoder.CRC16.java
net.sourceforge.javaFlacEncoder.CRC8.java
net.sourceforge.javaFlacEncoder.ChannelData.java
net.sourceforge.javaFlacEncoder.EncodedElement_32.java
net.sourceforge.javaFlacEncoder.EncodedElement.java
net.sourceforge.javaFlacEncoder.EncodingConfiguration.java
net.sourceforge.javaFlacEncoder.FLACEncoder.java
net.sourceforge.javaFlacEncoder.FLACFileOutputStream.java
net.sourceforge.javaFlacEncoder.FLACOutputStream.java
net.sourceforge.javaFlacEncoder.FLACStreamController.java
net.sourceforge.javaFlacEncoder.FLACStreamIdentifier.java
net.sourceforge.javaFlacEncoder.FLACStreamOutputStream.java
net.sourceforge.javaFlacEncoder.FLAC_ConsoleFileEncoder.java
net.sourceforge.javaFlacEncoder.FLAC_FileEncoder.java
net.sourceforge.javaFlacEncoder.FLAC_MD5.java
net.sourceforge.javaFlacEncoder.FrameHeader.java
net.sourceforge.javaFlacEncoder.FrameThread.java
net.sourceforge.javaFlacEncoder.Frame.java
net.sourceforge.javaFlacEncoder.LPC.java
net.sourceforge.javaFlacEncoder.MetadataBlockHeader.java
net.sourceforge.javaFlacEncoder.MetadataBlockStreamInfo.java
net.sourceforge.javaFlacEncoder.RiceEncoder.java
net.sourceforge.javaFlacEncoder.StreamConfiguration.java
net.sourceforge.javaFlacEncoder.Subframe_Constant.java
net.sourceforge.javaFlacEncoder.Subframe_Fixed.java
net.sourceforge.javaFlacEncoder.Subframe_LPC.java
net.sourceforge.javaFlacEncoder.Subframe_Verbatim.java
net.sourceforge.javaFlacEncoder.Subframe.java
net.sourceforge.javaFlacEncoder.UTF8Modified.java
org.rfcx.guardian.RfcxGuardianPrefs.java
org.rfcx.guardian.RfcxGuardian.java
org.rfcx.guardian.activity.MainActivity.java
org.rfcx.guardian.activity.PrefsActivity.java
org.rfcx.guardian.api.ApiCore.java
org.rfcx.guardian.audio.AudioCore.java
org.rfcx.guardian.database.AlertDb.java
org.rfcx.guardian.database.AudioDb.java
org.rfcx.guardian.database.DeviceStateDb.java
org.rfcx.guardian.database.SmsDb.java
org.rfcx.guardian.device.AirplaneMode.java
org.rfcx.guardian.device.CpuUsage.java
org.rfcx.guardian.device.DeviceState.java
org.rfcx.guardian.intentservice.ApiCheckInTriggerIntentService.java
org.rfcx.guardian.intentservice.AudioEncodeIntentService.java
org.rfcx.guardian.intentservice.ServiceMonitorIntentService.java
org.rfcx.guardian.receiver.AirplaneModeReceiver.java
org.rfcx.guardian.receiver.BootReceiver.java
org.rfcx.guardian.receiver.ConnectivityReceiver.java
org.rfcx.guardian.receiver.SmsReceiver.java
org.rfcx.guardian.service.ApiCheckInService.java
org.rfcx.guardian.service.AudioCaptureService.java
org.rfcx.guardian.service.CarrierCodeService.java
org.rfcx.guardian.service.DeviceStateService.java
org.rfcx.guardian.telecom.CarrierInteraction.java
org.rfcx.guardian.utility.DateTimeUtils.java
org.rfcx.guardian.utility.DeviceGuid.java
org.rfcx.guardian.utility.ExtAudioRecorderModified.java
org.rfcx.guardian.utility.FileUtils.java
org.rfcx.guardian.utility.HttpGet.java
org.rfcx.guardian.utility.HttpPostMultipart.java
org.rfcx.guardian.utility.TimeOfDay.java