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

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

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

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

Android

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

Android Studio

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

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

Q&A

解決済

1回答

2914閲覧

Androidのエミュレータについて

kasumihasu

総合スコア7

Java

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

Android

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

Android Studio

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

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

0グッド

0クリップ

投稿2016/03/15 04:47

Androidについて質問です。

現在、Android Studioを用いてAndroid開発をしているのですが、地磁気センサーの値がエミュレータではどうしても取得できません。加速度センサーの値は、あらかじめデフォルト値が与えられていたため取得できたのですが、そういった値は地磁気センサーには用意されていないのでしょうか。
また、値を求めることができるのかといったテストをしたいだけなので、実機でテストする必要性はないと感じていたのですが、値自体を取得するためには実機を用いてテストする他ないのでしょうか。
エミュレータは現在、Android Studio内蔵のものと、Genymotionを用いています。

参考になるかどうかはわかりませんが、端末の方角を求めたときのコードを下記に記しておきます。

簡単な質問で申し訳ありませんが、ご回答よろしくお願いいたします。

Java

1package jp.androidbook.myapp; 2 3import android.hardware.Sensor; 4import android.hardware.SensorEvent; 5import android.hardware.SensorEventListener; 6import android.hardware.SensorManager; 7import android.os.Bundle; 8import android.support.v7.app.AppCompatActivity; 9import android.widget.TextView; 10 11import java.util.List; 12 13public class MainActivity extends AppCompatActivity 14 implements SensorEventListener { 15 16 SensorManager manager; 17 float[] rotationMatrix = new float[ 9 ]; 18 float[] a_value = new float[ 3 ]; 19 float[] m_value = new float[ 3 ]; 20 float[] attitude = new float[ 3 ]; 21 TextView textView; 22 23 float[] rotate = new float[ 16 ]; 24 float[] inclinate = new float[ 16 ]; 25 float[] remaped = new float[ 16 ]; 26 float[] orientation = new float[ 3 ]; 27 28 @Override 29 public void onCreate ( Bundle savedInstanceState ) { 30 super.onCreate ( savedInstanceState ); 31 setContentView ( R.layout.activity_main ); 32 textView = ( TextView ) findViewById ( R.id.textView ); 33 34 manager = ( SensorManager ) getSystemService ( SENSOR_SERVICE ); 35 36 manager.registerListener ( this, manager 37 .getDefaultSensor ( Sensor.TYPE_MAGNETIC_FIELD ), 38 SensorManager.SENSOR_DELAY_GAME ); 39 manager.registerListener ( this, manager 40 .getDefaultSensor ( Sensor.TYPE_ACCELEROMETER ), 41 SensorManager.SENSOR_DELAY_GAME ); 42 } 43 @Override 44 public void onAccuracyChanged ( Sensor sensor, int accuracy ) {} 45 46 @Override 47 public void onSensorChanged ( SensorEvent event ) { 48 // MAGNETIC_FIELDのセンサーが取得できていないので、すべてACCELEROMETER 49 switch ( event.sensor.getType () ) { 50 case Sensor.TYPE_MAGNETIC_FIELD: 51 m_value = event.values.clone (); 52 break; 53 case Sensor.TYPE_ACCELEROMETER: 54 a_value = event.values.clone (); 55 break; 56 } 57 if ( a_value != null && m_value != null ) { 58 SensorManager.getRotationMatrix ( rotate, inclinate, a_value, 59 m_value ); 60 SensorManager 61 .remapCoordinateSystem ( rotate, SensorManager.AXIS_X, 62 SensorManager.AXIS_Y, remaped ); 63 SensorManager.getOrientation ( remaped, orientation ); 64 float degree = ( float ) Math.toDegrees ( orientation[ 0 ] ); 65 66 TextView textView = ( TextView ) findViewById ( 67 R.id.textView ); 68 textView.setText ( "dgree:" + degree ); 69 } else { 70 textView.setText ( "Not Found!" ); 71 } 72 } 73}

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

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

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

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

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

guest

回答1

0

ベストアンサー

>地磁気センサーの値がエミュレータではどうしても取得できません

Android Studio のエミュレータではm_valueとa_value共にデータが返ってきているようにみえますが
どこが問題と判断したところでしょうか

>実機でテストする必要性はないと感じていたのですが

単純な機能の確認であればいいのですが
基本的に実機テストは必要だと思います
特にこういった外部デバイスの場合などは

投稿2016/03/15 14:49

aja

総合スコア3733

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

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

kasumihasu

2016/03/16 05:40

おっしゃるとおり、実機でテストしてみたら正常に動作確認できました。 やはりエミュレータでの動作には限界があるようですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問