2017-02-25 12 views
0

私は3秒ごとに行うアクティビティを認識しているAndroidアプリケーションを開発中です(静的、歩行、実行中など)。私のデータベースには、次の値をインクリメントするアクティビティテーブルがあります。ヒューマンアクティビティ認識をAndroidであまり敏感にする方法

private int activeTime; 
private int longestInactivityInterval; 
private int currentInactivityInterval; 
private int averageInactInterval; 

これらはフラグメントで表されています。現在、それは非常に「機密」です。例えば、ユーザが静的である(すなわち、ベッドに横たわっている)場合、携帯電話をポケットから引き出すと、「ウォーキング」のような活動が認識される。認識活動の歴史はそのようになります。

static 
static 
walking 
static 
static 

どのように私は、この偶発「歩く」認識活動は、「静的」として認識されていることを確認することができます。どのように私はそれを修正する方法がありますか?

これは認識されているどのような活動に応じて、値をインクリメントする(活動の監視を行っているクラスです。

public class ActivityMonitor implements Observer, IActivityMonitor { 
private User mUser; 
private IActivityDataManager mDataManager; 

public ActivityMonitor(IActivityDataManager dataManager) { 
    mDataManager = dataManager; 
} 

@Override 
public void update(Observable observable, Object activity) { 
    monitorActivity(activity); 
} 

private void monitorActivity(Object activityClass) { 

    switch ((int) activityClass) { 
     case 0: 
      //activity = "walking"; 
     case 1: 
      //activity = "running"; 
     case 3: 
      //activity = "cycling"; 
      mDataManager.incActiveTime(); 
      mDataManager.clearCurrentInacInterval(); 
      break; 
     case 2: 
      //activity = "static"; 
      mDataManager.incCurrentInacInterval(); 
      break; 
    } 

} 

答えて

0

私は、設定されたサイズとApacheの共通CircularFifoQueueにを使用しています。問題への解決策を自分で見つけ2.

これは私のソリューションは、どのように見えるかです:基本的に

private void monitorActivity(Object activityClass) { 
    int activityInt = (int) activityClass; 
    correctionList.add(activityInt); 
    int correctResult = applyCorrection(activityInt); 

    if (correctResult == correctionList.size()) { 
     mDataManager.incActiveTime(); 
     mDataManager.clearCurrentInacInterval(); 
    } else { 
     mDataManager.incCurrentInacInterval(); 
    } 


} 


private int applyCorrection(int classInt) { 
    int count = 0; 
    for (int item : correctionList) { 
     if (item == 0 || item == 1 || item == 3) { 
      count++; 
     } 
    } 

    return count; 
} 

は、それは、可能性がありclassInt(0,1を追加します2つまたは3つ) - ウォーキング= 0、ランニング= 1、サイクリング= 3、スタティック= 2.メソッドはサイズ2のキューを調べます(これはファクタの役割を果たします。整数。返されたカウントcorrectResultが2の場合、そのアクティビティは時間ACTIVE(1,2,3)であり、STATIC(2)ではないことを意味します。

関連する問題