###前提・実現したいこと
現在、Android StudioでロケーションベースのARアプリを作成しようと思っています。
###発生している問題・エラーメッセージ
SoftBankのサービス開発者支援サイトにあったコードを基に作成しているのですが、(https://www.support.softbankmobile.co.jp/partner_st/home_tech9/column10-2.cfm)
SensorManager.registerListenerでエラーがでて途方に暮れています。サイトと同じコードを書いているのですが、エラーが消えません。分かる方、ご教授の程お願いします。
エラーメッセージ
Error:(66, 22) エラー: registerListenerに適切なメソッドが見つかりません(GPSARApp,Object,int)
メソッド SensorManager.registerListener(SensorListener,int,int)は使用できません
(引数の不一致:GPSARAppをSensorListenerに変換できません:)
メソッド SensorManager.registerListener(SensorEventListener,Sensor,int)は使用できません
(引数の不一致: ObjectをSensorに変換できません:)
というエラーがでて先に進めなくて困っています。
###該当のソースコード
Java
1import java.util.List; 2 3import android.app.Activity; 4import android.content.Context; 5import android.hardware.Sensor; 6import android.hardware.SensorEvent; 7import android.hardware.SensorEventListener; 8import android.hardware.SensorManager; 9import android.os.Bundle; 10import android.view.Window; 11import android.view.WindowManager; 12import android.view.WindowManager.LayoutParams; 13 14 15 16public class GPSARApp extends Activity implements SensorEventListener{ 17 18 private SensorManager sensorManager; 19 private float[] accelerometerValues = new float[3]; 20 private float[] magneticValues = new float[3]; 21 List listMag; 22 List listAcc; 23 24 private ARView arView; 25 26 27 @Override 28 public void onCreate(Bundle savedInstanceState) { 29 super.onCreate(savedInstanceState); 30 31 32 getWindow().clearFlags( 33 WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 34 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 35 requestWindowFeature(Window.FEATURE_NO_TITLE); 36 37 38 arView = new ARView(this); 39 40 41 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 42 listMag = sensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); 43 listAcc = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); 44 45 46 setContentView(new CameraView(this)); 47 addContentView(arView, new LayoutParams(LayoutParams.MATCH_PARENT, 48 LayoutParams.MATCH_PARENT)); 49 } 50 51 @Override 52 public void onStart() { 53 super.onStart(); 54 } 55 56 @Override 57 protected void onResume() { 58 super.onResume(); 59 60//ここから赤波線が引かれてエラーになっています。 61 sensorManager.registerListener(this, listMag.get(0), SensorManager.SENSOR_DELAY_NORMAL); 62 sensorManager.registerListener(this, listAcc.get(0), SensorManager.SENSOR_DELAY_NORMAL); 63 } 64//ここまで 65 66 @Override 67 public void onStop() { 68 super.onStop(); 69 sensorManager.unregisterListener(this); 70 } 71 72 @Override 73 public void onAccuracyChanged(Sensor sensor, int accuracy) { 74 } 75 76 77 @Override 78 public void onSensorChanged(SensorEvent event) { 79 switch (event.sensor.getType()) { 80 case Sensor.TYPE_ACCELEROMETER: 81 accelerometerValues = event.values.clone(); 82 break; 83 case Sensor.TYPE_MAGNETIC_FIELD: 84 magneticValues = event.values.clone(); 85 break; 86 } 87 88 if (magneticValues != null && accelerometerValues != null) { 89 float[] R = new float[16]; 90 float[] I = new float[16]; 91 92 SensorManager.getRotationMatrix(R, I, accelerometerValues, 93 magneticValues); 94 95 float[] actual_orientation = new float[3]; 96 97 SensorManager.getOrientation(R, actual_orientation); 98 99 float direction = (float) Math.toDegrees(actual_orientation[0]); 100 arView.drawScreen(direction); 101 } 102 } 103 104 105
###補足情報(言語/FW/ツール等のバージョン
Android Studio / Java
あなたの回答
tips
プレビュー