package com.samsung.spensdk.example.spenevent_general; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.samsung.spen.lib.input.SPenEventLibrary; import com.samsung.spensdk.applistener.SPenDetachmentListener; import com.samsung.spensdk.applistener.SPenHoverListener; import com.samsung.spensdk.applistener.SPenTouchListener; import com.samsung.spensdk.example.R; import com.samsung.spensdk.example.tools.SPenSDKUtils; public class SPen_Example_SPenEventGeneral extends Activity { private SPenEventLibrary mSPenEventLibrary; private ImageView mImageView; private Context mContext = null; private TextView mX = null; private TextView mY = null; private TextView mPressure = null; private TextView mTool = null; private TextView mTouchAction = null; private TextView mHoverAction = null; private final int TOOL_UNKNOWN = 0; private final int TOOL_FINGER = 1; private final int TOOL_PEN = 2; private final int TOOL_PEN_ERASER = 3; private int mCurrentTool = TOOL_UNKNOWN; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.general_purpose_spen_event); mImageView = (ImageView) findViewById(R.id.image_view); mX = (TextView)findViewById(R.id.x_point); mY = (TextView)findViewById(R.id.y_point); mTool = (TextView)findViewById(R.id.tool_type); mPressure = (TextView)findViewById(R.id.pressure); mTouchAction = (TextView)findViewById(R.id.tool_touch_action); mHoverAction = (TextView)findViewById(R.id.tool_hover_action); resetUI(); mSPenEventLibrary = new SPenEventLibrary(); //-------------------------------------------- // Set S pen Touch Listener //-------------------------------------------- mSPenEventLibrary.setSPenTouchListener(mImageView, new SPenTouchListener(){ @Override public boolean onTouchFinger(View view, MotionEvent event) { updateTouchUI(event.getX(), event.getY(), event.getPressure(), event.getAction(), "Finger"); // Update Current Color if(mCurrentTool!= TOOL_FINGER){ mCurrentTool = TOOL_FINGER; } return true; // keep event in this view } @Override public boolean onTouchPen(View view, MotionEvent event) { updateTouchUI(event.getX(), event.getY(), event.getPressure(), event.getAction(), "Pen"); // Update Current Color if(mCurrentTool!=TOOL_PEN){ mCurrentTool = TOOL_PEN; } return true; // keep event in this view } @Override public boolean onTouchPenEraser(View view, MotionEvent event) { updateTouchUI(event.getX(), event.getY(), event.getPressure(),event.getAction(), "Pen-Eraser"); if(mCurrentTool!=TOOL_PEN_ERASER){ mCurrentTool = TOOL_PEN_ERASER; } return true; // keep event in this view } @Override public void onTouchButtonDown(View view, MotionEvent event) { //Toast.makeText(mContext, "S Pen Button Down on Touch", Toast.LENGTH_SHORT).show(); } @Override public void onTouchButtonUp(View view, MotionEvent event) { Toast.makeText(mContext, "S Pen Button Up on Touch", Toast.LENGTH_SHORT).show(); } }); //-------------------------------------------- // [Custom Hover Icon Only] // Set Custom Hover Icon //-------------------------------------------- //mSPenEventLibrary.setCustomHoveringIcon(mContext, mImageView, getResources().getDrawable(R.drawable.custom_hover_icon)); //-------------------------------------------- // [Hover Listener Only] // Set SPenHoverListener //-------------------------------------------- //mSPenEventLibrary.setSPenHoverListener(mImageView, new SPenHoverListener(){...} //-------------------------------------------- // [Hover Listener & Custom Hover Icon] // Set S pen HoverListener & Custom Hover Icon //-------------------------------------------- mSPenEventLibrary.setSPenCustomHoverListener(mContext, mImageView, new SPenHoverListener(){ @Override public boolean onHover(View view, MotionEvent event) { updateHoverUI(event.getX(), event.getY(), event.getPressure(), event.getAction(), "Hover"); return false; } @Override public void onHoverButtonDown(View view, MotionEvent event) { } @Override public void onHoverButtonUp(View view, MotionEvent event) { Toast.makeText(mContext, "S Pen Button Up on Hover", Toast.LENGTH_SHORT).show(); } }, getResources().getDrawable(R.drawable.tool_ic_pen)); //-------------------------------------------- // Set S pen Detachment Listener //-------------------------------------------- mSPenEventLibrary.registerSPenDetachmentListener(mContext, new SPenDetachmentListener(){ @Override public void onSPenDetached(boolean bDetached) { if(bDetached) Toast.makeText(mContext, " SPen Detached", Toast.LENGTH_SHORT).show(); else Toast.makeText(mContext, "S Pen Inserted", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onDestroy() { // unregister SPenDetachment Listener mSPenEventLibrary.unregisterSPenDetachmentListener(mContext); super.onDestroy(); } @Override public void onBackPressed() { SPenSDKUtils.alertActivityFinish(this, "Exit"); } // Reset Touch UI private void resetUI(){ mX.setText("X : " + String.format("%.2f", 0.f)); mY.setText("Y : " + String.format("%.2f", 0.f)); mPressure.setText("Pressure : " + String.format("%.3f", 0.f)); mTool.setText("Tool"); mTouchAction.setText("Touch"); mHoverAction.setText("Hover"); } // Update Touch UI private void updateTouchUI(float x, float y, float pressure, int action, String tool){ mX.setText("X : " + String.format("%.2f", x)); mY.setText("Y : " + String.format("%.2f", y)); mPressure.setText("Pressure : " + String.format("%.3f", pressure)); if(action==MotionEvent.ACTION_DOWN) mTouchAction.setText("DOWN"); else if(action==MotionEvent.ACTION_MOVE) mTouchAction.setText("MOVE"); else if(action==MotionEvent.ACTION_UP) mTouchAction.setText("UP"); else if(action==MotionEvent.ACTION_CANCEL) mTouchAction.setText("CANCEL"); else mTouchAction.setText("Unknow"); mTool.setText(tool); } // Update Hover UI private void updateHoverUI(float x, float y, float pressure, int action, String tool){ // For noise point On Hover, so filter it if(x>=0 && y>=0){ mX.setText("X : " + String.format("%.2f", x)); mY.setText("Y : " + String.format("%.2f", y)); mPressure.setText("Pressure : " + String.format("%.3f", pressure)); } if(action==MotionEvent.ACTION_HOVER_ENTER) mHoverAction.setText("HOVER ENTER"); else if(action==MotionEvent.ACTION_HOVER_MOVE) mHoverAction.setText("HOVER MOVE"); else if(action==MotionEvent.ACTION_HOVER_EXIT) mHoverAction.setText("HOVER EXIT"); else mHoverAction.setText("Unknow"); } }