中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PhoneGap for Android平臺源碼的示例分析

發布時間:2021-11-26 09:14:23 來源:億速云 閱讀:104 作者:柒染 欄目:移動開發

今天就跟大家聊聊有關PhoneGap for Android平臺源碼的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

PhoneGap內部數據傳遞使用了JSON,比如PhoneGap中指南針部分源碼如下:

public class CompassListener extends Plugin implements SensorEventListener {   public static int STOPPED = 0;  public static int STARTING = 1;     public static int RUNNING = 2;     public static int ERROR_FAILED_TO_START = 3;         public long TIMEOUT = 30000;  // Timeout in msec to shut off listener       int status;       // status of listener     float heading;      // most recent heading value     long timeStamp;      // time of most recent value     long lastAccessTime;    // time the value was last retrieved       private SensorManager sensorManager;// Sensor manager     Sensor mSensor;      // Compass sensor returned by sensor manager    /**   * Constructor.   */  public CompassListener() {         this.timeStamp = 0;         this.setStatus(CompassListener.STOPPED);  }   /**   * Sets the context of the Command. This can then be used to do things like   * get file paths associated with the Activity.   *   * @param ctx The context of the main Activity.   */  public void setContext(PhonegapActivity ctx) {   super.setContext(ctx);         this.sensorManager = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE);  }   /**   * Executes the request and returns PluginResult.   *   * @param action   The action to execute.   * @param args    JSONArry of arguments for the plugin.   * @param callbackId The callback id used when calling back into JavaScript.   * @return     A PluginResult object with a status and message.   */  public PluginResult execute(String action, JSONArray args, String callbackId) {   PluginResult.Status status = PluginResult.Status.OK;   String result = "";        try {    if (action.equals("start")) {     this.start();    }    else if (action.equals("stop")) {     this.stop();    }    else if (action.equals("getStatus")) {     int i = this.getStatus();     return new PluginResult(status, i);    }    else if (action.equals("getHeading")) {     // If not running, then this is an async call, so don't worry about waiting     if (this.status != RUNNING) {      int r = this.start();      if (r == ERROR_FAILED_TO_START) {       return new PluginResult(PluginResult.Status.IO_EXCEPTION, ERROR_FAILED_TO_START);      }      // Wait until running      long timeout = 2000;      while ((this.status == STARTING) && (timeout > 0)) {       timeouttimeout = timeout - 100;       try {        Thread.sleep(100);       } catch (InterruptedException e) {        e.printStackTrace();       }      }      if (timeout == 0) {       return new PluginResult(PluginResult.Status.IO_EXCEPTION, AccelListener.ERROR_FAILED_TO_START);            }     }     float f = this.getHeading();     return new PluginResult(status, f);    }    else if (action.equals("setTimeout")) {     this.setTimeout(args.getLong(0));    }    else if (action.equals("getTimeout")) {     long l = this.getTimeout();     return new PluginResult(status, l);    }    return new PluginResult(status, result);   } catch (JSONException e) {    e.printStackTrace();    return new PluginResult(PluginResult.Status.JSON_EXCEPTION);   }  }   /**   * Identifies if action to be executed returns a value and should be run synchronously.   *   * @param action The action to execute   * @return   T=returns value   */  public boolean isSynch(String action) {   if (action.equals("getStatus")) {    return true;   }   else if (action.equals("getHeading")) {    // Can only return value if RUNNING    if (this.status == RUNNING) {     return true;    }   }   else if (action.equals("getTimeout")) {    return true;   }   return false;  }         /**      * Called when listener is to be shut down and object is being destroyed.      */  public void onDestroy() {   this.stop();  }      //--------------------------------------------------------------------------     // LOCAL METHODS     //--------------------------------------------------------------------------      /**      * Start listening for compass sensor.      *      * @return    status of listener      */  public int start() {      // If already starting or running, then just return         if ((this.status == CompassListener.RUNNING) || (this.status == CompassListener.STARTING)) {          return this.status;         }    // Get accelerometer from sensor manager   List<Sensor> list = this.sensorManager.getSensorList(Sensor.TYPE_ORIENTATION);          // If found, then register as listener   if (list.size() > 0) {    this.mSensor = list.get(0);    this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_NORMAL);             this.lastAccessTime = System.currentTimeMillis();             this.setStatus(CompassListener.STARTING);   }    // If error, then set status to error         else {             this.setStatus(CompassListener.ERROR_FAILED_TO_START);         }                 return this.status;  }       /**      * Stop listening to compass sensor.      */  public void stop() {         if (this.status != CompassListener.STOPPED) {          this.sensorManager.unregisterListener(this);         }         this.setStatus(CompassListener.STOPPED);  }      public void onAccuracyChanged(Sensor sensor, int accuracy) {   // TODO Auto-generated method stub   }      /**      * Sensor listener event.      *      * @param SensorEvent event      */  public void onSensorChanged(SensorEvent event) {    // We only care about the orientation as far as it refers to Magnetic North   float heading = event.values[0];    // Save heading         this.timeStamp = System.currentTimeMillis();   this.heading = heading;   this.setStatus(CompassListener.RUNNING);    // If heading hasn't been read for TIMEOUT time, then turn off compass sensor to save power   if ((this.timeStamp - this.lastAccessTime) > this.TIMEOUT) {    this.stop();   }  }       /**      * Get status of compass sensor.      *      * @return   status      */  public int getStatus() {   return this.status;  }    /**   * Get the most recent compass heading.   *   * @return   heading   */  public float getHeading() {         this.lastAccessTime = System.currentTimeMillis();   return this.heading;  }    /**   * Set the timeout to turn off compass sensor if getHeading() hasn't been called.   *   * @param timeout  Timeout in msec.   */  public void setTimeout(long timeout) {   this.TIMEOUT = timeout;  }    /**   * Get the timeout to turn off compass sensor if getHeading() hasn't been called.   *   * @return timeout in msec   */  public long getTimeout() {   return this.TIMEOUT;  }   /**   * Set the status and send it to JavaScript.   * @param status   */  private void setStatus(int status) {   this.status = status;  }  }

看完上述內容,你們對PhoneGap for Android平臺源碼的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉峪关市| 杭州市| 天峨县| 阿坝县| 田东县| 五常市| 徐州市| 阿瓦提县| 信阳市| 安平县| 玉树县| 巢湖市| 马边| 益阳市| 天气| 全椒县| 米易县| 巴里| 隆安县| 横山县| 保亭| 视频| 石泉县| 米林县| 井陉县| 双城市| 柏乡县| 长阳| 武隆县| 义马市| 四平市| 健康| 绵阳市| 涞水县| 大英县| 临猗县| 大姚县| 泊头市| 德格县| 黎城县| 大悟县|