java
1import android.app.Activity; 2import android.content.Context; 3import android.hardware.Sensor; 4import android.hardware.SensorEvent; 5import android.hardware.SensorEventListener; 6import android.hardware.SensorManager; 7import android.os.AsyncTask; 8import android.os.Bundle; 9import android.view.SurfaceHolder; 10import java.io.BufferedWriter; 11import java.io.IOException; 12import java.io.OutputStream; 13import java.io.OutputStreamWriter; 14import java.net.Socket; 15import java.util.List; 16 17 18public class MainActivity extends Activity 19 implements SensorEventListener, SurfaceHolder.Callback{ 20 21 SensorManager mSensorManager; 22 Sensor mAccSensor; 23 24 float mVX; 25 float mVY; 26 // float mVZ; 27 28 @Override 29 protected void onCreate(Bundle savedInstanceState) { 30 super.onCreate(savedInstanceState); 31 setContentView(R.layout.activity_main); 32 33 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 34 mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 35 } 36 37 @Override 38 protected void onStop() { 39 super.onStop(); 40 mSensorManager.unregisterListener(this); 41 } 42 43 @Override 44 protected void onResume() { 45 super.onResume(); 46 List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); 47 if(sensors.size() > 0) { 48 Sensor s = sensors.get(0); 49 mSensorManager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI); 50 } 51 } 52 53 public void connect(final String str) { 54 new AsyncTask<Void, Void, String>() { 55 56 57 @Override 58 protected String doInBackground(Void... voids) { 59 try { 60 61 Socket socket = new Socket("10.0.33.13",4000); 62 OutputStream os = socket.getOutputStream(); 63 64 BufferedWriter bufwriter 65 = new BufferedWriter(new OutputStreamWriter( os ) ); 66 bufwriter.write(str ); 67 //bufwriter.flush(); 68 69 bufwriter.close(); 70 socket.close(); 71 72 } catch (IOException e) { 73 e.printStackTrace(); 74 } 75 return null; 76 } 77 }.execute(); 78 } 79 80 @Override 81 public void onSensorChanged(SensorEvent event) { 82 if(event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { 83 84 85 float y = event.values[1]; 86 float x = event.values[2]; 87 //float z = event.values[3]; 88 89 mVX = mVX + x; 90 mVY = mVY + y; 91 //mVZ = mVZ + z; 92 93 94 String str = "X:" + mVX 95 + "Y:" + mVY ; 96 97 connect(str); 98 } 99 } 100 101 @Override 102 public void onAccuracyChanged(Sensor sensor, int accuracy) {//使わない 103 } 104 105 @Override 106 public void surfaceCreated(SurfaceHolder holder) { 107 registerSensor(); 108 } 109 110 public void registerSensor() { 111 mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_GAME); 112 } 113 114 @Override 115 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 116 117 mVX = 0; 118 mVY = 0; 119 // mVZ = 0; 120 } 121 122 @Override 123 public void surfaceDestroyed(SurfaceHolder holder) { 124 125 mSensorManager.unregisterListener(this); 126 } 127} 128
センサーから読み取った値をconnect()でサーバー側に送信し、サーバー側のターミナルで連続して表示することはできたのですが、ターミナルに改行せずに行頭に戻る命令を送る方法がわかりません。
サーバー側のプログラムに System.out.println(reader.readLine() + "\r");と書いても改行されるのですがどうすればいいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/30 02:39