私は多くのコードを読んだことがありますが、加速度センサーを使ってイメージを動かす方法を理解できません。登録方法は分かりますが、実際に画像や形状の描画は、加速度計の軸に同期して動く、私はこれを行うにはAndroidのJavaを使用しています。私が本当に苦労しているので、誰かが私を助けてくれるの?あなたの時間と助けてくれてありがとう。加速度計のコードを理解する助けが必要
1
A
答えて
1
だから、ここリスナーを登録するためのコードは、(私はあなたがすでにこれをやったと知っているが、それは傷つけることはありません)です。
private void enableAccelerometerListening() {
sensorManager = (SensorManager) getSystemService(COntext.SENSOR_SERVICE);
sensorManager.registerListener(sensorEventListener), sensorManager.getDefaultSensor(
Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
private void disableAccelerometerListening() {
if (sensorManager != null) {
sesnsorManager.unregisterListener(sensorEVentListener, sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER));
sensorManager = null;
}}
あなたは自分のクラス宣言の下にカップルのフィールドが必要になります:ここでは
private SesnsorManager sensorManager;
private float acceleration;
private float currentAcceleration;
private float lastAcceleration;
private static final int ACCELERATION_THRESHOLD = 15000;
は、あなたが助けを必要とするものに非常に近い取得するイベントハンドラ、次のとおりです。
private SensorEventListener sensorEventListener = new SensorEventListener() {
public void onSesnsorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
lastAcceleration = currentAcceleration; //save previous accel value
currentAcceleration = x*x + y*y + z*z;
acceleration = currentAcceleration * (currentAcceleration - lastAcceleration); // calc the change in acceleration
//if the accel is above a certain threshold:
if (acceleration > ACCELERATION_THRESHOLD) {
//MAKE YOUR CODE HERE THAT RESPONDS TO ACCELERATION EVENTS
//Note, your accel threshold should be determined by trial and error on a number of devices
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy {}
};
0
また、私はあなたのアニメーションのニーズの一部に取り組もうとしますが、私はこの分野ではまだまだ不安です。あなたがしなければならないことは、加速度計が動きを検出するにつれて画像を動かすことだと思います。画像は加速度計ではなくアニメーションを介して直接移動する必要があります。そう、「スポット」はあなたのイメージです、よろしいですか? (両方とも以下のコードは、スポットを追加し、直接、加速度計に縛られていないそのアニメーションを(設定したが、私は、これはそれにもかかわらず役に立つことを願っています):
public void addSpot() {
int x = random.nextInt(viewWidth - SPOT_DIAMETER);
int y = random.nextInt(viewHeight = SPOT_DIAMETER);
int x2 = random.nextInt(viewWidth - SPOT_DIAMETER);
int y2 = random.nextInt(viewWidth - SPOT_DIAMETER);
final ImageView spot = (ImageView) layoutFinlater.inflate(R.layout.untouched, null);
spot.setLayoutParams(new RelativeLayout.LayoutParams(SPOT_DIAMETER, SPOT_DIAMETER));
spot.setX(x);
spot.setY(y);
さて、右ここで私はあなたが始めることができると思うところであります
あなたは上記の私の他の応答で見たように、
if (acceleration > ACCELERATION_THRESHOLD) {
spot.animate().x(x2).y(y2).setDuration(animationTime);
animationTimeはちょうどあなたが適切であると感じ、そして世話をすることを忘れないでください(ミリ秒)何かになります...加速度センサーイベントで何かをやって必要なパッケージをインポートする。
関連する問題
- 1. コードを理解するのに助けが必要です
- 2. 助けが必要このPHPコードを理解する
- 3. Javaのコードを理解する助けが必要
- 4. Javaコードを理解するための助けが必要
- 5. 短いPythonコードを理解する助けが必要
- 6. 計算を高速化する助けが必要
- 7. 私はコードの一部を理解するのに助けが必要です -
- 8. このMySQLコードを理解するのに助けが必要です
- 9. このCコード(アレイ)を理解する助けが必要です
- 10. このコードを本から理解する助けが必要です
- 11. 作品コードを理解するのに助けが必要です
- 12. javascript confettiのコードを解読するのに助けが必要
- 13. cv2.undistortPoints()のエラーを理解する助けが必要です
- 14. このSQLクエリを理解するのに助けが必要
- 15. Herokuのログを理解するのに助けが必要
- 16. スタックフレームのレイアウトを理解するのに助けが必要
- 17. テトリスのこの実装を理解する助けが必要
- 18. このコードを解釈する助けが必要
- 19. SELECTクエリを理解するのに助けが必要
- 20. この正規表現を理解する助けが必要
- 21. このObjective-Cコードスニペットを理解する助けが必要
- 22. DNSfilterスクリプトを理解するのに助けが必要
- 23. GLES 2.0のglDrawElementsを理解する助けが必要
- 24. Browsercompabilityを理解するのに助けが必要
- 25. 相続を理解するための助けが必要
- 26. プログラミングの課題を理解する助けが必要
- 27. ウェブサイトデータベースの問題を理解する助けが必要
- 28. ループの単語ジャンブルを理解する助けが必要
- 29. 角度ui-routerコードを確認する手助けが必要
- 30. Javaバイトコード命令を理解する助けが必要です
あなたの返事ありがとう私は現在、あなたのコードを見渡して理解しています。役立つなら、私はあなたの答えをマークアップします – user1169775
それは働いたように見えます:) – Davek804