私はandroidstudioでアプリ開発を行なっています。
#実現させたいこと
ジャイロセンサーで数値を獲得して、その数値をリアルタイムでmacに表示させたい
#問題点
ジャイロセンサーで数値を獲得することはできますが、その情報を送信する方法がわかりません。
以前android sdkのサンプルであるbluetoothchatを用いてラズパイのターミナルにandroidで入力した文字を表示させることはできたのですが、直接macに表示させる方法はわからないので、ご存知でしたらご教授ください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
java
1 2import android.app.Activity; 3import android.content.Context; 4import android.hardware.Sensor; 5import android.hardware.SensorEvent; 6import android.hardware.SensorEventListener; 7import android.hardware.SensorManager; 8import android.os.AsyncTask; 9import android.os.Bundle; 10import android.view.SurfaceHolder; 11import java.io.BufferedWriter; 12import java.io.IOException; 13import java.io.OutputStream; 14import java.io.OutputStreamWriter; 15import java.net.Socket; 16import java.util.List; 17 18 19public class MainActivity extends Activity 20 implements SensorEventListener, SurfaceHolder.Callback{ 21 22 SensorManager mSensorManager; 23 Sensor mAccSensor; 24 25 float mVX; 26 float mVY; 27 28 29 30 31 @Override 32 protected void onCreate(Bundle savedInstanceState) { 33 super.onCreate(savedInstanceState); 34 setContentView(R.layout.activity_main); 35 36 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 37 mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 38 39 40 41 42 } 43 44 @Override 45 protected void onStop() { 46 super.onStop(); 47 mSensorManager.unregisterListener(this); 48 } 49 50 @Override 51 protected void onResume() { 52 super.onResume(); 53 List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); 54 if(sensors.size() > 0) { 55 Sensor s = sensors.get(0); 56 mSensorManager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI); 57 } 58 } 59 60 public void connect(final String str) { 61 new AsyncTask<Void, Void, String>() { 62 63 64 @Override 65 protected String doInBackground(Void... voids) { 66 try { 67 68 Socket socket = new Socket("10.0.33.13",4000); 69 OutputStream os = socket.getOutputStream(); 70 71 BufferedWriter bufwriter 72 = new BufferedWriter(new OutputStreamWriter( os ) ); 73 bufwriter.write(str); 74 //bufwriter.newLine(); 75 bufwriter.flush(); 76 //bufwriter.close(); 77 //socket.close(); 78 79 80 81 } catch (IOException e) { 82 e.printStackTrace(); 83 } 84 return null; 85 } 86 }.execute(); 87 } 88 89 @Override 90 public void onSensorChanged(SensorEvent event) { 91 if(event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { 92 93 94 float y = event.values[1]; 95 float x = event.values[2]; 96 97 mVX = mVX + x; 98 mVY = mVY + y; 99 100 101 String str = "X:" + mVX +"\n" 102 + "Y:" + mVY +"\n"; 103 104 connect(str); 105 } 106 } 107 108 @Override 109 public void onAccuracyChanged(Sensor sensor, int accuracy) {//使わない 110 } 111 112 @Override 113 public void surfaceCreated(SurfaceHolder holder) { 114 registerSensor(); 115 } 116 117 public void registerSensor() { 118 mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_GAME); 119 } 120 121 @Override 122 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 123 124 mVX = 0; 125 mVY = 0; 126 } 127 128 @Override 129 public void surfaceDestroyed(SurfaceHolder holder) { 130 mSensorManager.unregisterListener(this); 131 } 132} 133
投稿2017/11/27 13:30
退会済みユーザー
総合スコア0
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。