package cn.com.gogler.sensor;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ToggleButton;
public class ACCActivity extends Activity implements SensorEventListener
{
private SensorManager sms;
private CheckBox acc , orientation;
private ToggleButton toggleButton1;
private Button stop , button1 , button2;
private EditText editText1;
private StringBuilder as;
private TextView textView1 , textView2;
private final String accs = "当前加速度(x,y,z):" ,
oris = "当前方向值(z,x,y):";
private final String accfile = "acc.txt" , orifile = "ori.txt";
private FileHelper fh;
private String defaultEdit = "输入操作描述";
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
@Override
public void onCreate(Bundle savedInstanceState)
{
/** Called when the activity is first created. */
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
acc = (CheckBox) this.findViewById(R.id.acc);
orientation = (CheckBox) this.findViewById(R.id.orientation);
toggleButton1 = (ToggleButton) this.findViewById(R.id.toggleButton1);
stop = (Button) this.findViewById(R.id.stop);
textView1 = (TextView) this.findViewById(R.id.textView1);
textView2 = (TextView) this.findViewById(R.id.textView2);
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
editText1 = (EditText) this.findViewById(R.id.editText1);
fh = new FileHelper(this.getApplicationContext());
/* 将操作描述写入文件-方向传感器数据文件 */
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
defaultEdit = editText1.getText().toString();
fh.writeFileData(orifile, defaultEdit);
}
});
/* 将操作描述写入文件-加速度传感器数据文件 */
button2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
defaultEdit = editText1.getText().toString();
fh.writeFileData(accfile, defaultEdit);
}
});
/* 关闭程序 */
stop.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ACCActivity.this.finish();
}
});
/* 获取系统的传感器管理服务 */
sms = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
try
{/* 创建数据存放文件 */
fh.createSDFile(accfile);
fh.createSDFile(orifile);
}
catch (final IOException e)
{
e.printStackTrace();
}
}
@Override
protected void onPause()
{
sms.unregisterListener(this);
super.onPause();
}
@Override
protected void onResume()
{
super.onResume();
/* 为系统的感应器注册监听器 */
if (toggleButton1.isChecked())
{
if (orientation.isChecked())
{
sms.registerListener(this,
sms.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
if (acc.isChecked())
{
sms.registerListener(this,
sms.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
}
}
else
{
sms.unregisterListener(this);
}
}
@Override
public void onSensorChanged(SensorEvent event)
{
/**
* 处理不同类型传感器返回的数据,写入文件保存起来。
* */
final float[] values = event.values;
final int sensorType = event.sensor.getType();
if (toggleButton1.isChecked())
{
switch (sensorType)
{
case Sensor.TYPE_ACCELEROMETER:
as = new StringBuilder();
as.append("(" + (int) values[0] + "," + (int) values[1]
+ "," + (int) values[2] + ")\n");
textView1.setText(accs + as);
fh.writeFileData(accfile, as.toString());
case Sensor.TYPE_ORIENTATION:
as = new StringBuilder();
as.append("(" + (int) values[0] + "," + (int) values[1]
+ "," + (int) values[2] + ")\n");
textView2.setText(oris + as);
fh.writeFileData(orifile, as.toString());
}
}
}
@Override
protected void onStop()
{
sms.unregisterListener(this);
super.onStop();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页