2016-04-12 18 views
0

私はAndroidViewアプリケーションを使って、携帯電話の加速度計の値(X、Y、Z)をtextviewsに表示する必要があります。私はトーストでそれを表示しようとしたが、それは働いたが、textviewsのためにそれを行うことができませんでした。ここ androidのtextViewに値を追加するには

は私のコードです:

///この私のメインページのために:

package com.sourcey.materiallogindemo; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainAccelerometer extends Activity implements AccelerometerListener{ 



private TextView mTxtViewX; 
private TextView mTxtViewY; 
private TextView mTxtViewZ; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_accelerometer); 
    mTxtViewX = (TextView) findViewById(R.id.textX); 
    mTxtViewY = (TextView) findViewById(R.id.textY); 
    mTxtViewZ = (TextView) findViewById(R.id.textZ); 

    Intent intent = getIntent(); 
    // Check onResume Method to start accelerometer listener 
} 

public void onAccelerationChanged(float x, float y, float z) { 
    // TODO Auto-generated method stub 

} 

public void onShake(float force) { 

    // Called when Motion Detected 
    Toast.makeText(getBaseContext(), "Motion detected", 
      Toast.LENGTH_LONG).show(); 

} 

@Override 
public void onResume() { 
    super.onResume(); 
    Toast.makeText(getBaseContext(), "onResume Accelerometer Started", 
      Toast.LENGTH_LONG).show(); 

    //Check device supported Accelerometer senssor or not 
    if (AccelerometerManager.isSupported(this)) { 

     //Start Accelerometer Listening 
     AccelerometerManager.startListening(this); 
    } 
} 

@Override 
public void onStop() { 
    super.onStop(); 

    //Check device supported Accelerometer senssor or not 
    if (AccelerometerManager.isListening()) { 

     //Start Accelerometer Listening 
     AccelerometerManager.stopListening(); 

     Toast.makeText(getBaseContext(), "onStop Accelerometer Stoped", 
       Toast.LENGTH_LONG).show(); 
    } 

} 


@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Log.i("Sensor", "Service distroy"); 

    //Check device supported Accelerometer senssor or not 
    if (AccelerometerManager.isListening()) { 

     //Start Accelerometer Listening 
     AccelerometerManager.stopListening(); 

     Toast.makeText(getBaseContext(), "onDestroy Accelerometer Stoped", 
       Toast.LENGTH_LONG).show(); 
    } 

} 

}

、これは私が表示をしたい私のAccelerometerManager活動である

import android.content.Context; 
import android.graphics.Color; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.List; 



public class AccelerometerManager { 



static Context aContext=null; 


/** Accuracy configuration */ 
private static float threshold = 15.0f; 
private static int interval  = 200; 

private static Sensor sensor; 
private static SensorManager sensorManager; 
// you could use an OrientationListener array instead 
// if you plans to use more than one listener 

private static AccelerometerListener listener; 

/** indicates whether or not Accelerometer Sensor is supported */ 
private static Boolean supported; 
/** indicates whether or not Accelerometer Sensor is running */ 
private static boolean running = false; 

/** 
* Returns true if the manager is listening to orientation changes 
*/ 
public static boolean isListening() { 
    return running; 
} 

/** 
* Unregisters listeners 
*/ 
public static void stopListening() { 
    running = false; 
    try { 
     if (sensorManager != null && sensorEventListener != null) { 
      sensorManager.unregisterListener(sensorEventListener); 
     } 
    } catch (Exception e) {} 
} 

/** 
* Returns true if at least one Accelerometer sensor is available 
*/ 
public static boolean isSupported(Context context) { 
    aContext = context; 
    if (supported == null) { 
     if (aContext != null) { 


      sensorManager = (SensorManager) aContext. 
        getSystemService(Context.SENSOR_SERVICE); 

      // Get all sensors in device 
      List<Sensor> sensors = sensorManager.getSensorList(
        Sensor.TYPE_ACCELEROMETER); 

      supported = new Boolean(sensors.size() > 0); 



     } else { 
      supported = Boolean.FALSE; 
     } 
    } 
    return supported; 
} 

/** 
* Configure the listener for shaking 
* @param threshold 
*    minimum acceleration variation for considering shaking 
* @param interval 
*    minimum interval between to shake events 
*/ 
public static void configure(int threshold, int interval) { 
    AccelerometerManager.threshold = threshold; 
    AccelerometerManager.interval = interval; 
} 

/** 
* Registers a listener and start listening 
* @param accelerometerListener 
*    callback for accelerometer events 
*/ 
public static void startListening(AccelerometerListener accelerometerListener) 
{ 

    sensorManager = (SensorManager) aContext. 
      getSystemService(Context.SENSOR_SERVICE); 

    // Take all sensors in device 
    List<Sensor> sensors = sensorManager.getSensorList(
      Sensor.TYPE_ACCELEROMETER); 

    if (sensors.size() > 0) { 

     sensor = sensors.get(0); 

     // Register Accelerometer Listener 
     running = sensorManager.registerListener(
       sensorEventListener, sensor, 
       SensorManager.SENSOR_DELAY_GAME); 

     listener = accelerometerListener; 
    } 


} 

/** 
* Configures threshold and interval 
* And registers a listener and start listening 
* @param accelerometerListener 
*    callback for accelerometer events 
* @param threshold 
*    minimum acceleration variation for considering shaking 
* @param interval 
*    minimum interval between to shake events 
*/ 
public static void startListening(
     AccelerometerListener accelerometerListener, 
     int threshold, int interval) { 
    configure(threshold, interval); 
    startListening(accelerometerListener); 
} 

/** 
* The listener that listen to events from the accelerometer listener 
*/ 
private static SensorEventListener sensorEventListener = 
     new SensorEventListener() { 



      private long now = 0; 
      private long timeDiff = 0; 
      private long lastUpdate = 0; 
      private long lastShake = 0; 

      private float x = 0; 
      private float y = 0; 
      private float z = 0; 
      private float lastX = 0; 
      private float lastY = 0; 
      private float lastZ = 0; 
      private float force = 0; 

      public void onAccuracyChanged(Sensor sensor, int accuracy) {} 

      public void onSensorChanged(SensorEvent event) { 
       // use the event timestamp as reference 
       // so the manager precision won't depends 
       // on the AccelerometerListener implementation 
       // processing time 
       now = event.timestamp; 

       x = event.values[0]; 
       y = event.values[1]; 
       z = event.values[2]; 

       // if not interesting in shake events 
       // just remove the whole if then else block 
       if (lastUpdate == 0) { 
        lastUpdate = now; 
        lastShake = now; 
        lastX = x; 
        lastY = y; 
        lastZ = z; 
        Toast.makeText(aContext, "No Motion detected", Toast.LENGTH_SHORT).show(); 

       } else { 
        timeDiff = now - lastUpdate; 

        if (timeDiff > 0) { 

       /*force = Math.abs(x + y + z - lastX - lastY - lastZ) 
          /timeDiff;*/ 
         force = Math.abs(x + y + z - lastX - lastY - lastZ); 

         if (Float.compare(force, threshold) >0) { 
          //Toast.makeText(Accelerometer.getContext(), (now-lastShake)+" >= "+interval, 1000).show(); 
          if (now - lastShake >= interval) { 

           // trigger shake event 
           listener.onShake(force); 



           // AXE X 
           String sx= String.valueOf(x); 
           Toast toast1=Toast.makeText(aContext,"X="+sx, Toast.LENGTH_SHORT); 
           TextView mTxtViewX = (TextView) toast1.getView().findViewById(android.R.id.message); 
           mTxtViewX.setTextColor(Color.GREEN); 
           //toast1.show(); 
           mTxtViewX.setText(sx); 

           // AXE Y 
           String sy= String.valueOf(y); 
           Toast toast2= Toast.makeText(aContext,"Y="+ sy, Toast.LENGTH_SHORT); 
           TextView mTxtViewY = (TextView) toast2.getView().findViewById(android.R.id.message); 
           mTxtViewY.setTextColor(Color.RED); 
           //toast2.show(); 
           mTxtViewY.setText(sy); 


           // AXE Z 
           String sz= String.valueOf(z); 
           Toast toast3= Toast.makeText(aContext, "Z=" + sz, Toast.LENGTH_SHORT); 
           TextView mTxtViewZ = (TextView) toast3.getView().findViewById(android.R.id.message); 
           mTxtViewZ.setTextColor(Color.BLACK); 
           //toast3.show(); 
           mTxtViewZ.setText(sz); 



          } 
          else 
          { 
           Toast.makeText(aContext,"No Motion detected", Toast.LENGTH_SHORT).show(); 

          } 
          lastShake = now; 
         } 
         lastX = x; 
         lastY = y; 
         lastZ = z; 
         lastUpdate = now; 
        } 
        else 
        { 
         Toast.makeText(aContext,"No Motion detected", Toast.LENGTH_SHORT).show(); 

        } 
       } 
       // trigger change event 
       listener.onAccelerationChanged(x, y, z); 
      } 

     }; 

}

これはあなたのビュー

android.R.id.message 

あなたがXMLに設定されたIDを使用を見つけたときに間違ったIDを使用している私のxmlファイル

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainAccelerometer" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/primary_dark" 
    android:text="Shake/Tilt Your Phone To Get Accelerometer Motion Alerts" 
    android:id="@+id/textView" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentTop="true" /> 
<TextView android:id="@+id/textX" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="12dp" 
    android:background="@color/base" 
    android:gravity="center" 
    android:textSize="16dip" 
    android:layout_above="@+id/textY" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<TextView android:id="@+id/textY" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="12dp" 
    android:background="@color/abc_search_url_text_normal" 
    android:gravity="center" 
    android:textSize="16dip" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginBottom="166dp" /> 

<TextView android:id="@+id/textZ" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="12dp" 
    android:background="@color/accent_material_dark" 
    android:gravity="center" 
    android:textSize="16dip" 
    android:layout_above="@+id/textX" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+0

あなたはonAccelerationChanged 'ます。public void(フロートX、フロートY、フロートZ){ // TODO自動で' TextView'sをアップデートしよう生成されたメソッドスタブ } ' – user0815

+0

@ user0815ありがとう、魅力のような作品:) –

+0

私はそれを答えとして投稿しました;) – user0815

答えて

0

あなたは

でTextViewsをアップデートしよう

public void onAccelerationChanged(float x, float y, float z) { // TODO Auto-generated method stub }

0

です。

textX 
textY 
textZ 
0

使用これは、すべてのTextViewが正しい参照がfindViewByIdでそれらに接続していることをチェックを警告のTextView

mTxtViewX.setText("text to be displayed"); 
    mTxtViewY.setText("text to be displayed"); 
    mTxtViewZ.setText("text to be displayed"); 

に文字列を表示する

0

あなたはこのような正しいのTextViewを見つけなければならない:

TextView mTxtViewX = (TextView) ((MainActivity)aContext).findViewById(R.id.textX); 
関連する問題