core :: union_find
union–find algorithm using an efficient disjoint-set data structure
# Vibration services for Android
#
# Importing this module will trigger the use of the VIBRATE permission
module vibration is
android_manifest("""<uses-permission android:name="android.permission.VIBRATE" />""")
end
import dalvik
# Handle to an Android vibrator
extern class Vibrator in "Java" `{ android.os.Vibrator `}
super JavaObject
# Vibrate for `n` miliseconds
fun vibrate(n: Int) in "Java" `{ self.vibrate(n); `}
# Does this devices has a vibrator
#
# TODO activate in API 11
#fun exists: Bool in "Java" `{ return self.hasVibrator(); `}
# Turn off the vibration
fun cancel in "Java" `{ self.cancel(); `}
# HACK for bug #845
redef fun new_global_ref import sys, Sys.jni_env `{
Sys sys = Vibrator_sys(self);
JNIEnv *env = Sys_jni_env(sys);
return (*env)->NewGlobalRef(env, self);
`}
end
redef class App
# Get the handle to this device vibrator as a global ref
var vibrator: Vibrator is lazy do
var v = vibrator_native(native_context)
return v.new_global_ref
end
private fun vibrator_native(context: NativeContext): Vibrator in "Java" `{
android.os.Vibrator v = (android.os.Vibrator)
context.getSystemService(android.content.Context.VIBRATOR_SERVICE);
return v;
`}
end
lib/android/vibration.nit:17,1--60,3