Be simple

”当たり前”が誰かのためになる

Androidアプリにシェイクアクションを入れるための簡単な実装方法

はじめに

こんばんは!

1日更新が遅れてしまい申し訳ない。。

引っ越しが来週なので、引越しの家電買ったり、諸々準備があったため遅れてしまいました。

 

今日は前回お話しした、以下の記事の技術面でシェイク機能を簡単に実装する方法をご紹介します。

rozkey.hatenablog.com

 

 シェイク機能を実装するために使用したライブラリ

上の記事にも書いてあるアプリの中で、シェイク機能を実装するために次のライブラリを使用しました。

 

github.com

 

こちらを利用することでシェイクした際の動作を追加するのを簡単に実現することができます。

 

導入方法

appのgradleファイルの中に以下のものを追加してください。

 

// shake
compile 'com.squareup:seismic:1.0.2'

 最新のバージョンは、1.0.2です。(2018年5月現在)

 

導入はたったこれだけです

 

つかいかた

 

実装したいActivityに下記のようにShakeDetector.Listenerを継承させます。

今回はMainActivityに持たせたいので下記のように実装しています。

class MainActivity : AppCompatActivity(), ShakeDetector.Listener

 

次に、onCreateの中でリスナーにセットします

val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sd = ShakeDetector(this)
sd.start(sensorManager)

 

Context.SENSORの中身を見ると下記のようになっていて、


/**
* Use with {@link #getSystemService} to retrieve a {@link
* android.hardware.SensorManager} for accessing sensors.
*
* @see #getSystemService
* @see android.hardware.SensorManager
*/
public static final String SENSOR_SERVICE = "sensor";

 

sensorManagerというハードウェアのセンサーにアクセスするために必要なので上のようにしています。その後、リスナーをセットしてstartを呼び出すだけでシェイクを検知するようになります。

 

リスナーを継承させた場合にhearShake関数をオーバーライドする必要があります。

override fun hearShake() {
// やりたい処理を書く
}

 

この中にシェイクの動作をした際にやりたい処理を書くことでシェイク機能を簡単に実装することができます。

 

検知しているかどうかを簡単に試したい場合は、この関数の中で、下記のように実装することで振った際にToastが出るようになるので簡単に試すことができると思います。

override fun hearShake() {
Toast.makeText(this@MainActivity, "Everybody Shaked!", Toast.LENGTH_SHORT).show()
}

 

自分のアプリの場合には、データベースからランダムにデータを取って来たものをadapterに新たに追加する処理を行っているので、シェイクした際に新しくランダムな順番で10件のTweetを読み込むようにしています。

 

 

おわりに

今回はアプリにシェイク機能を簡単に実現する方法について紹介しました!

一週間開いた割には軽い感じでしたが、引っ越して時間ができたらもっと質を意識して書いていこうと思います。

 

最後まで見ていただきありがとうございました!

質問や疑問点などありましたらコメントに書いていただけると嬉しいです!