android 搖一搖 震動 聲音效果

2021-09-11 12:52:27 字數 1813 閱讀 6342

搖一搖主要通過sensormanager監聽手機,實現sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。

shakesensorlistener shakelistener = new shakesensorlistener();

sensormanager sensormanager = (sensormanager)getsystemservice(context.sensor_service);

private class shakesensorlistener implements sensoreventlistener

// 開始動畫

anim.start();

float values = event.values;

/** x : x軸方向的重力加速度,向右為正

* y : y軸方向的重力加速度,向前為正

* z : z軸方向的重力加速度,向上為正

*/float x = math.abs(values[0]);

float y = math.abs(values[1]);

float z = math.abs(values[2]);

//加速度超過19,搖一搖成功

if (x > 19 || y > 19 || z > 19)

},1000);}}

@override

public void onaccuracychanged(sensor sensor, int accuracy)

}複製**

如果手機一直在搖晃,會不停的呼叫onsensorchanged ,而我們只想要一次搖一搖的效果,所以加了isshake欄位去判斷。 在一次搖一搖事件完成後置false,可以繼續搖一搖。

註冊監聽,同時別忘了取消註冊。

@override

protected void onresume

() @override

protected void onpause

() 複製**

搖一搖過程可以執行動畫效果。

objectanimator anim = objectanimator.offloat(imghand,"rotation",0f,45f,-30f,0f);

anim.setduration(500);

anim.setrepeatcount(valueanimator.infinite);

複製**

private void playsound(context context) 

複製**

震動效果,這裡注意要在androidmanifest 檔案裡新增許可權

private void vibrate(long milliseconds) 

複製**

一次搖一搖後,這裡在彈框消失後可繼續搖一搖。

private void showdialog

() });

window window = malertdialog.getwindow();

window.setbackgrounddrawable(new colordrawable(0x00000000));

}複製**

至此,一套搖一搖效果完成!

歡迎關注我的個人部落格:www.manjiexiang.cn/

android 搖一搖 震動 聲音效果

搖一搖主要通過sensormanager監聽手機,實現sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesensorlistener sensormanag...

android 搖一搖 震動 聲音效果

搖一搖主要通過sensormanager監聽手機,實現sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesensorlistener sensormanag...

android 搖一搖 震動 聲音效果

android 搖一搖 震動 聲音效果 搖一搖主要通過sensormanager監聽手機,實現 sensoreventlistener,在onsensorchanged去判斷,根據加速度來判斷搖晃的程度。shakesensorlistener shakelistener new shakesenso...