2017-06-28 10 views
0

私はAndroidが初めてです。私は磁気センサーデータを使ってアプリケーションを作成しています。私はWifiに基づいた別のプログラムのソースコードに従っています。私の基本的なプログラムは、私はこれでセンサ値にアクセスするが、私は何をしたいことは、他のクラスのセンサ値を使用することですができハッシュマップのセンサー値を使用

public class MainActivity extends AppCompatActivity implements SensorEventListener{ 
 

 
    Sensor magnetometer; 
 
    SensorManager sm; 
 
    public float a,b,c; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     sm = (SensorManager) getSystemService(SENSOR_SERVICE); 
 
     sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); 
 
    } 
 

 
    @Override 
 
    public void onSensorChanged(SensorEvent event) { 
 
     if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { 
 
      getMag(event); 
 
     } 
 
    } 
 

 
    public static void getMag(SensorEvent event) { 
 
     float[] values = event.values; 
 

 
     float x = values[0]; 
 
     float y = values[1]; 
 
     float z = values[2]; 
 

 
     float value = (float)Math.sqrt(Math.pow(x,2) +Math.pow(y,2) + Math.pow(z,2)); 
 
    } 
 

 

 
    @Override 
 
    protected void onStop() { 
 
     super.onStop(); 
 
     finish(); 
 
    } 
 

 
    @Override 
 
    protected void onPause() { 
 
     super.onPause(); 
 
     sm.unregisterListener(this); 
 
    } 
 

 
    @Override 
 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
 

 
    } 
 

 
}

です。私が従っているソースコードでは、コードは次のように使用されます。だから、

//this is map activity, here for wifi, it just uses "getScanResult() to scan bssid and value, which can be used in onReciveWifiScanResult 
 
public void onStart() { 
 
     super.onStart(); 
 

 
     mReceiver = new BroadcastReceiver() 
 
     { 
 
      @Override 
 
      public void onReceive(Context c, Intent intent) 
 
      { 
 
       onReceiveWifiScanResults(mWifi.getScanResults()); 
 

 
      } 
 
     }; 
 
    } 
 
    
 
    public void onReceiveWifiScanResults(List<ScanResult> results) { 
 
     
 
    } 
 
    
 
    
 
    
 
    //And the programmer used it in another class to store to the hashmap 
 
    
 
    public void onReceiveMagScanResults(List<ScanResult> results) { 
 

 
       
 
       HashMap<String, Integer> measurements = new HashMap<String, Integer>(); 
 
       for (ScanResult result : results) { 
 
        measurements.put(result.BSSID, result.level); 
 
       } 
 

 
       TreeSet<String> keys = new TreeSet<String>(); 
 
       keys.addAll(measurements.keySet()); 
 
       keys.addAll(mMeasurements.keySet());

、どのように私は私のメインの活動の「onSensorChanged」イベントから私の磁気センサデータが「onReceiveWifiscanresult」の代わりに、上記放送受信機のように使用するために得ることができますか?

助けがあれば助かります。ありがとうございました。

+0

このコードを使用無関係なタグを使用していないスパムを行います。 Andnoの 'java'と' javascript'は同じものではありません。 –

+0

@Marcin。ありがとう、私はそれに気付かなかった。 –

答えて

0

ああ、私は答えを見つけました。今、私はSQLiteデータベースにデータを格納し、カーソルを使用してデータにアクセスできます。データはハッシュマップに入れられます。

私は

  TextView diff= (TextView) findViewById(R.id.calcDiff); 
 
      SQLiteDatabase db; 
 
      db= openOrCreateDatabase(
 
        "Mag_Positioning.db" 
 
        , SQLiteDatabase.CREATE_IF_NECESSARY 
 
        , null 
 
      ); 
 
      db.setVersion(1); 
 
      db.setLocale(Locale.getDefault()); 
 
      db.setLockingEnabled(true); 
 
      Cursor cur = DBHelper.getInstance().getAllData(); 
 
      cur.moveToFirst(); 
 
      HashMap<PointF, Float> difference = new HashMap<>(); 
 

 
      if (cur.isLast() == false) { 
 
       do{ 
 
        cur1=cur.getInt(2); 
 
        cur2=cur.getInt(3); 
 
        PointF location = new PointF(cur1, cur2); 
 
        z= Float.valueOf(cur.getString(7)); 
 
        total = Float.valueOf(String.valueOf(Math.sqrt(Math.pow((d-z),2)))); 
 
        difference.put(location, total); 
 
        diff.append("\n" + difference +"\n"); 
 
       }while(cur.moveToNext()); 
 
      } 
 
      cur.close();

関連する問題