質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1551閲覧

サブクラスで作ったセンサーの値をメインで使う

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/12/06 06:57

編集2017/12/06 07:17

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をサブクラスで使うことはできるでしょうか?

このリンク
の記事を読ませてもらいましたがイマイチ理解できませんでした。

似たような記事を知っていたり
わかる方がいましたら、ご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2017/12/06 16:42

具体的にどこが理解できなかったか指摘していただければ回答しやすいかと思います。
guest

回答1

0

ベストアンサー

イマイチ理解できませんでした

public CheckNetworkAvailable(Context context){ this.context = context; }

Activityから受け取ったContextを使えば
getSystemService
を使用できるようになる
ということでしょう

ただこのケースでは、リスナー
registerListener
が問題になるのではないでしょうか

これをMainActivityで受け取るためには独自のリスナーをinterface等を使って
設定すれば受け取れるかもしれませんが
何か変ですよね、リスナーで受け取っているものをまたリスナーで取り出す
あるいはグローバル変数にするとか
ただセンサー出力自体も数十msec程度のものが大量に出力されるとすると
それもどうなのでしょう
センサー出力をフィルタリングするなどの処理をしてからの方がいいような気もします

そもそもの仕様、構成をもう一度洗い直してみる必要があると思います
例えば、このセンサーを扱うところは別のActivityにしてしまうとか

投稿2017/12/08 01:01

aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問