android studioでアプリ開発をしています。
java
1import android.content.Context; 2import android.hardware.Sensor; 3import android.hardware.SensorEvent; 4import android.hardware.SensorEventListener; 5import android.hardware.SensorManager; 6import android.os.Bundle; 7import android.support.v7.app.AppCompatActivity; 8import android.util.Log; 9import android.view.SurfaceHolder; 10import android.widget.TextView; 11 12import java.util.List; 13 14public class MainActivity extends AppCompatActivity 15 implements SensorEventListener, SurfaceHolder.Callback { 16 SensorManager mSensorManager; 17 Sensor mAccSensor; 18 19 TextView values; 20 21 float mVX; 22 float mVY; 23 float mVZ; 24 25 long mFrom; 26 long mTo; 27 28 @Override 29 protected void onCreate(Bundle savedInstanceState) { 30 Log.v("METHOD", "onCreate"); 31 super.onCreate(savedInstanceState); 32 //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 33 setContentView(R.layout.activity_main); 34 35 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 36 mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 37 38 values = (TextView)findViewById(R.id.textView); 39 } 40 41 @Override 42 protected void onStop() { 43 super.onStop(); 44 mSensorManager.unregisterListener(this); 45 } 46 47 @Override 48 protected void onResume() { 49 super.onResume(); 50 List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ROTATION_VECTOR); 51 if(sensors.size() > 0) { 52 Sensor s = sensors.get(0); 53 mSensorManager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI); 54 } 55 } 56 57 58 59 @Override 60 public void onSensorChanged(SensorEvent event) { 61 if(event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) { 62 63 float z = event.values[0];//奥 64 float y = event.values[1];//縦 65 float x = event.values[2];//横 66 67 mVX = mVX + x; 68 mVY = mVY + y; 69 mVZ = mVZ + z; 70 71 String str = "X:" + mVX +"\n"//縦 72 + "Y:" + mVY +"\n"//奥行き 73 + "Z:" + mVZ;//横 74 75 values.setText(str); 76 } 77 } 78 79 @Override 80 public void onAccuracyChanged(Sensor sensor, int i) { 81 82 } 83 84 @Override 85 public void surfaceCreated(SurfaceHolder surfaceHolder) { 86 registerSensor(); 87 } 88 89 public void registerSensor() { 90 mFrom = System.currentTimeMillis(); 91 mSensorManager.registerListener(this, mAccSensor, SensorManager.SENSOR_DELAY_GAME); 92 } 93 94 @Override 95 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 96 97 98 mVX = 0; 99 mVY = 0; 100 } 101 102 @Override 103 public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 104 mSensorManager.unregisterListener(this); 105 } 106 107}
このコードのようにMainActivityでセンサーの値を獲得することはできるのですが、サブクラスからセンサーの値を獲得して例えばMainActivityで使うことはできるでしょうか?
逆にこのコードのxやyをサブクラスで使うことはできるでしょうか?
このリンク
の記事を読ませてもらいましたがイマイチ理解できませんでした。
似たような記事を知っていたり
わかる方がいましたら、ご教授ください。
回答1件
あなたの回答
tips
プレビュー