先贴上部分代码
main.xml<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/jp.symphodia.android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<jp.symphodia.android.SpSurfaceView
android:id="@+id/SpSurfaceView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>TempBrightbar.javapackage jp.symphodia.android;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;public class TempBrightBar extends Activity implements SensorEventListener{
private SpSurfaceView view; // �g�p����r���[�N���X
MenuItem item1;
MenuItem item2;
MenuItem item3;
SensorManager mSensorManager = null;
Sensor sensorLight = null;
Sensor sensorTemp = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SensorManager mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensorLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Sensor sensorTemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
mSensorManager.registerListener(this, sensorLight,SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this, sensorTemp,SensorManager.SENSOR_DELAY_GAME);
view = (SpSurfaceView) this.findViewById(R.id.SpSurfaceView01);
}
protected void onPause(){
super.onPause();
mSensorManager.unregisterListener(this, sensorLight);
mSensorManager.unregisterListener(this, sensorTemp);
}
public void onSensorChanged(SensorEvent event){
if(event.sensor.getType() == Sensor.TYPE_LIGHT)
{
}
if(event.sensor.getType() == Sensor.TYPE_TEMPERATURE)
{
}
}
public void onAccuracyChanged(Sensor s, int accuracy)
{
Log.d("accuracy","onAccuracyChanged: "+s +", accuray:" + accuracy);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); ////////
//MenuItem item1 = menu.add("Start Vibration");
item1 = menu.add("Start");
OnMenuItemClickListener listener1 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if(view.start() == true)
{
Log.d("hoge","start true");
item1.setEnabled(false);
item2.setEnabled(true);
item3.setEnabled(false);
}else{
Log.d("hoge","start false");
}
return false;
}
};
item1.setOnMenuItemClickListener(listener1); ////////
/////////
//MenuItem item2 = menu.add("Stop!");
item2 = menu.add("Stop!");
OnMenuItemClickListener listener2 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
item1.setEnabled(true);
item2.setEnabled(false);
item3.setEnabled(true);
onPause();
//view.stop();
return false;
}
};
item2.setOnMenuItemClickListener(listener2); //////////
//MenuItem item3 = menu.add("Finish!");
item3 = menu.add("Finish!");
OnMenuItemClickListener listener3 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
//view.stop();
System.exit(RESULT_OK);
return false;
}
};
item3.setOnMenuItemClickListener(listener3);
item2.setEnabled(false);
////////////
return true;
}
}SpSurfaceView.javapackage jp.symphodia.android;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.OutputStreamWriter;//import java.util.List;import java.util.concurrent.*;import java.util.Calendar;import java.util.UUID;import java.util.Vector;import java.util.Set;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.*;import android.graphics.Paint.Style;import android.hardware.*;import android.util.AttributeSet;import android.util.Log;import android.view.*;import android.os.Environment; import android.widget.Toast;//Bluetooth�pimport android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class SpSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private static final int REQUEST_ENABLE_BT = 1; private Activity context; private SurfaceHolder holder; byte[] buffer = new byte[2048]; // buffer store for the stream int[] value = new int[1024]; float[] pts = new float[512]; //private int sensor_count = 0; public BufferedWriter m_bw; ScheduledExecutorService executor; private BluetoothSocket mSocket; private BluetoothDevice mDevice; private InputStream mInStream = null; private OutputStream mOutStream = null; public SpSurfaceView(Context context) { super(context); init(context); } public SpSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public void init(Context context){ this.context = (Activity)context; holder = getHolder(); holder.addCallback(this); setFocusable(true); requestFocus(); }
public boolean start(){
.
.
.//此处省略些代码 int interval = 50;
executor =
Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
public void run() {
sensor_work();
}
}, 500, interval, TimeUnit.MILLISECONDS);
return true;
}
public void sensor_work()
{
。
。
。
Canvas c = holder.lockCanvas();
c.drawColor(Color.BLACK);
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(Color.WHITE);
p.setTextSize(16); //tempareture
c.drawText("100", 40, 48, p);
c.drawText("0", 54, 448, p);
c.drawText(temp + " C", 116, 460, p);
//bright
c.drawText("600", 260, 48, p);
c.drawText("0", 274, 448, p);
c.drawText(bright + " Lux", 324, 460, p);
p.setStyle(Style.FILL);
p.setColor(Color.RED);
Rect r = new Rect();
r.left = 80;
r.right = 180;
r.bottom = 440;
r.top = 440 - (int)(temp * 4);
c.drawRect(r, p);
p.setStyle(Style.STROKE);
p.setColor(Color.WHITE);
r.top = 40;
c.drawRect(r, p);
//
p.setStyle(Style.FILL);
p.setColor(Color.YELLOW);
r.left = 300;
r.right = 400;
r.bottom = 440;
r.top = 440 - (int)( (bright * 400) / 600 );
c.drawRect(r, p);
p.setStyle(Style.STROKE);
p.setColor(Color.WHITE);
r.top = 40;
c.drawRect(r, p);
holder.unlockCanvasAndPost(c);
}onSensorChanged得到的数据值怎样传递到SpSurfaceView类中
main.xml<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/jp.symphodia.android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<jp.symphodia.android.SpSurfaceView
android:id="@+id/SpSurfaceView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>TempBrightbar.javapackage jp.symphodia.android;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;public class TempBrightBar extends Activity implements SensorEventListener{
private SpSurfaceView view; // �g�p����r���[�N���X
MenuItem item1;
MenuItem item2;
MenuItem item3;
SensorManager mSensorManager = null;
Sensor sensorLight = null;
Sensor sensorTemp = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SensorManager mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensorLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
Sensor sensorTemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
mSensorManager.registerListener(this, sensorLight,SensorManager.SENSOR_DELAY_GAME);
mSensorManager.registerListener(this, sensorTemp,SensorManager.SENSOR_DELAY_GAME);
view = (SpSurfaceView) this.findViewById(R.id.SpSurfaceView01);
}
protected void onPause(){
super.onPause();
mSensorManager.unregisterListener(this, sensorLight);
mSensorManager.unregisterListener(this, sensorTemp);
}
public void onSensorChanged(SensorEvent event){
if(event.sensor.getType() == Sensor.TYPE_LIGHT)
{
}
if(event.sensor.getType() == Sensor.TYPE_TEMPERATURE)
{
}
}
public void onAccuracyChanged(Sensor s, int accuracy)
{
Log.d("accuracy","onAccuracyChanged: "+s +", accuray:" + accuracy);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu); ////////
//MenuItem item1 = menu.add("Start Vibration");
item1 = menu.add("Start");
OnMenuItemClickListener listener1 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if(view.start() == true)
{
Log.d("hoge","start true");
item1.setEnabled(false);
item2.setEnabled(true);
item3.setEnabled(false);
}else{
Log.d("hoge","start false");
}
return false;
}
};
item1.setOnMenuItemClickListener(listener1); ////////
/////////
//MenuItem item2 = menu.add("Stop!");
item2 = menu.add("Stop!");
OnMenuItemClickListener listener2 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
item1.setEnabled(true);
item2.setEnabled(false);
item3.setEnabled(true);
onPause();
//view.stop();
return false;
}
};
item2.setOnMenuItemClickListener(listener2); //////////
//MenuItem item3 = menu.add("Finish!");
item3 = menu.add("Finish!");
OnMenuItemClickListener listener3 = new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
//view.stop();
System.exit(RESULT_OK);
return false;
}
};
item3.setOnMenuItemClickListener(listener3);
item2.setEnabled(false);
////////////
return true;
}
}SpSurfaceView.javapackage jp.symphodia.android;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.OutputStreamWriter;//import java.util.List;import java.util.concurrent.*;import java.util.Calendar;import java.util.UUID;import java.util.Vector;import java.util.Set;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.*;import android.graphics.Paint.Style;import android.hardware.*;import android.util.AttributeSet;import android.util.Log;import android.view.*;import android.os.Environment; import android.widget.Toast;//Bluetooth�pimport android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class SpSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private static final int REQUEST_ENABLE_BT = 1; private Activity context; private SurfaceHolder holder; byte[] buffer = new byte[2048]; // buffer store for the stream int[] value = new int[1024]; float[] pts = new float[512]; //private int sensor_count = 0; public BufferedWriter m_bw; ScheduledExecutorService executor; private BluetoothSocket mSocket; private BluetoothDevice mDevice; private InputStream mInStream = null; private OutputStream mOutStream = null; public SpSurfaceView(Context context) { super(context); init(context); } public SpSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public void init(Context context){ this.context = (Activity)context; holder = getHolder(); holder.addCallback(this); setFocusable(true); requestFocus(); }
public boolean start(){
.
.
.//此处省略些代码 int interval = 50;
executor =
Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(new Runnable() {
public void run() {
sensor_work();
}
}, 500, interval, TimeUnit.MILLISECONDS);
return true;
}
public void sensor_work()
{
。
。
。
Canvas c = holder.lockCanvas();
c.drawColor(Color.BLACK);
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(Color.WHITE);
p.setTextSize(16); //tempareture
c.drawText("100", 40, 48, p);
c.drawText("0", 54, 448, p);
c.drawText(temp + " C", 116, 460, p);
//bright
c.drawText("600", 260, 48, p);
c.drawText("0", 274, 448, p);
c.drawText(bright + " Lux", 324, 460, p);
p.setStyle(Style.FILL);
p.setColor(Color.RED);
Rect r = new Rect();
r.left = 80;
r.right = 180;
r.bottom = 440;
r.top = 440 - (int)(temp * 4);
c.drawRect(r, p);
p.setStyle(Style.STROKE);
p.setColor(Color.WHITE);
r.top = 40;
c.drawRect(r, p);
//
p.setStyle(Style.FILL);
p.setColor(Color.YELLOW);
r.left = 300;
r.right = 400;
r.bottom = 440;
r.top = 440 - (int)( (bright * 400) / 600 );
c.drawRect(r, p);
p.setStyle(Style.STROKE);
p.setColor(Color.WHITE);
r.top = 40;
c.drawRect(r, p);
holder.unlockCanvasAndPost(c);
}onSensorChanged得到的数据值怎样传递到SpSurfaceView类中
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货