前提・実現したいこと
参考書を元に、加速度センサーアプリを作ろうとソースコードを写経している初心者です。
やりたいこととしては「kotlinでif文の条件として「==」を使って比較をしたい」になります。
発生している問題・エラーメッセージ
該当のソースコード
package com.example.accball import android.content.Context import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.SurfaceHolder import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity(), SensorEventListener, SurfaceHolder.Callback { private var surfaceWidth: Int = 0 //サーフェスビューの幅 private var surfaceHeight: Int = 0 //サーフェスビューの高さ private val radius = 50.0f private val coef = 1000.0f private var ballX: Float = 0f private var ballY: Float = 0f private var vx: Float = 0f private var vy: Float = 0f private var time: Long = 0L override fun surfaceChanged(holder: SurfaceHolder?, format: Int, width: Int, heigth: Int) { surfaceWidth = width surfaceHeight = heigth } override fun surfaceDestroyed(holder: SurfaceHolder?) { val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensorManager.unregisterListener(this) } override fun surfaceCreated(holder : SurfaceHolder?) { val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val accSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) sensorManager.registerListener(this, accSensor, SensorManager.SENSOR_DELAY_GAME) } override fun onAccuracyChanged(sensor :Sensor?,accuracy:Int) { } override fun onSensorChanged(event: SensorEvent?) { if (event == null) return if (time == 0L) time = System.currentTimeMillis() if (event.sensor.type) == Sensor.TYPE_ACCELEROMETER){ val x = -event.values[0] val y = event.values[1] } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val holder = surfaceView.holder holder.addCallback(this) } override fun onResume() { super.onResume() val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val accSensor = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER) sensorManager.registerListener( this, accSensor, SensorManager.SENSOR_DELAY_GAME) } override fun onPause() { super.onPause() val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensorManager.unregisterListener(this) } }
試したこと
エラーから恐らく比較するには型が同じである必要があり、今回は「Unit」と「Int」なので
比較が出来ません、と言われているのかと考えています。
ネットで調べたところ「キャスト」という型を変更する方法があるようですが、
今回だとどちらをどちらにキャストすれば良いのか分からず困っています。
また、参考書では該当箇所について特にキャストせずに記載されているので
そもそも本来は今回のエラーは出ないのが正しいのかもしれないとも思っています。
詳しい方、お手数ですがご助言宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/29 08:27