私は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>
あなたはonAccelerationChanged 'ます。public void(フロートX、フロートY、フロートZ){ // TODO自動で' TextView'sをアップデートしよう生成されたメソッドスタブ } ' – user0815
@ user0815ありがとう、魅力のような作品:) –
私はそれを答えとして投稿しました;) – user0815