I am Developing an project in which i want diffrent task for diffrent time like if user button up after 5 milisecond then a code execute and if pressing time is more then that then a diffrent
actually em creating a chathead like in facebook chat
problem is this on ActionDown Event i want to open or launch my app
but problem is when user try to reallocate the chathead from one location to other the event fire like
This is my code
here in ACTION_DOWN event i want to intent to the app
public class ChadHead extends Service {
private final Handler mHandler = new Handler();
private Runnable mTimer1;
private WindowManager windowManager;
private ImageView chatHead;
Display display;
int width;
int count=0;
@Override
public IBinder onBind(Intent intent) {
// Not used
return null;
}
@Override
public void onCreate() {
super.onCreate();
mTimer1 = new Runnable() {
@Override
public void run() {
count++;
// TODO Auto-generated method stub
mHandler.postDelayed(this, 5000);
if (count == 1) {
mHandler.removeCallbacks(mTimer1);
// put your code here:
}
}
};
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.ic_launcher);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;
windowManager.addView(chatHead, params);
chatHead.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@SuppressWarnings("deprecation")
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
mHandler.postDelayed(mTimer1, 0);
/*Intent i;
PackageManager manager = getPackageManager();
try {
i = manager.getLaunchIntentForPackage("com.technorapper.technorappermapp");
if (i == null)
throw new PackageManager.NameNotFoundException();
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
}*/
Toast.makeText(getApplicationContext(), "TechnoRapper", 50)
.show();
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX
+ (int) (event.getRawX() - initialTouchX);
params.y = initialY
+ (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, params);
display = windowManager.getDefaultDisplay();
width = display.getWidth();
return true;
case MotionEvent.ACTION_UP:
count = 0;
if (initialTouchX < width / 2) {
initialTouchX = 0;
} else if (initialTouchX >= width / 2) {
initialTouchX = width;
}
return true;
}
return false;
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null)
windowManager.removeView(chatHead);
}
}