package sto.android.app;


/**
**函数命名规则:public 接口以大写开头(回调函数除外)
**函数参数：把每个函数的参数和返回值标准清楚：包括类型 和 参数含义
**              
**请重现以下方法
**@author Don
*/
public abstract interface StoJNI{
	
	/*xxxxxxxxxxxxxxxxxx下面是 "宏"参数定义xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
	/*xxxxxxxxxxxxxxxxxxEndxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
	public static final int GPIO_VIBRATE 					= 0X10;			//马达
	public static final int GPIO_CAMFLASH 				= 0X20;			//闪光灯
	public static final int GPIO_LED_LEFT_RED 		= 0X30;			//LED灯
	public static final int GPIO_LED_WIFI 				= 0X40;
	public static final int GPIO_LED_RIGHT_BLUE 	= 0X50;
	public static final int GPIO_LED_RIGHT_GREEN 	= 0X60;
	public static final int GPIO_ON 							= 0;					// io 开
	public static final int GPIO_OFF 							= 1;					// io 关
	
	
	//常用扫描头ID定义
	public static final int MODEL_SE955 = 0; // 设备读取不到扫描头ID都认为SE955在线
	public static final int MODEL_SE950 = 1;
	public static final int MODEL_SE4500 = 2;
	public static final int MODEL_MDL2001 = 3;
	public static final int MODEL_UE966 = 4;
	public static final int MODEL_SE965 = 5;
	public static final int MODEL_N4313 = 6;
	public static final int MODEL_N3680 = 7;
	public static final int MODEL_EM1350 = 8;
	public static final int MODEL_SE4710 = 9;
	public static final int MODEL_HN5600= 10;
	public static final int MODEL_SE4710_TC=11;//added by xujia for 4710+tc
	public static final int MODEL_W170 = 12;
	public static final int MODEL_K9 = 13;
	

	

	/**
	 * 获取平台号。
	 * 
	 * @return 1=PLATFORM_WDT420，2=PLATFORM_WDT585
	 * 		3 = PLATFORM_WDT520,4 = PLATFORM_WDT510, 5 = PLATFORM_WDT550;
	 */
	public abstract int getPlatform();
	/**
	 * 扫描头回调接口
	 * @author Don
	 *
	 */
	public interface ScanCallBack {
		/**
		 * 回调接口，str是扫描结果
		 * @param str
		 */
		void onScanResults(String str);
		
		/**
		 * 软解使用 type是条码类型  str是扫描结果
		 * @param str
		 * @param type
		 */
		void onScanResults(String str, int type);
	}
	
	
	public abstract String getJniVer();
	/**
	 * 返回设备映射的标准按键值
	 * @param keycode
	 * @return
	 */
	public abstract int getEventFuction(int keycode);
	/**
	 * 返回供应商名称
	 * @return
	 */
	public abstract String getPdaBrand();
	/**
	 * 设置回调接口
	 * @param mScanCB
	 */
	public abstract void setmScanCB(ScanCallBack mScanCB);
	/**
	 * GPIO 状态设置。
	 * 
	 * @param gpio
	 *            GPIO_VIBRATE。GPIO_CAMFLASH。GPIO_LED_*
	 * @param status
	 *            GPIO_ON 点亮GPIO。GPIO_OFF 熄灭GPIO
	 * */
	public abstract void SetGPIOStatusJNI(int gpio, int status);


	/**
	 * 打开扫描头句柄
	 */
	public abstract void SetScannerOn();
  
	
	/**
	 * 开始扫描（触发扫描）
	 */


	public abstract void SetScannerStart();

	/**
	 * 停止扫描
	 */
	public abstract void SetScannerStop();

	/**
	 * 关闭扫描头句柄
	 */
	public abstract void SetScannerOff();

	/**
	 * @param para	设置扫描头参数。
	 * @param value 参数值
	 * @return		0成功 -1失败
	 */
	public abstract int SetScannerPara(int para, int value);
	/**
	 * @param para
	 * @return	value 参数值 获取的参数值
	 */
	public abstract int GetScannerPara(int para);
	
	/**
	 * @param para	参数
	 * @param value 参数值
	 * @return		
	 */
	public abstract String SetScannerPara(String para, String value);
	
	/**
	 * @param para
	 * @return	value 参数值 获取的参数值
	 */
	public abstract String GetScannerPara(String para);
	

	/**
	 * 触发扫描
	 */
	public abstract void SetScannerRetriger();

	/**
	 * 设置扫描超时时间
	 * 
	 * @param sec
	 *            单位为秒
	 */
	public abstract void SetScannerTimerOut(int sec);

	/**
	 * 是否在扫描   true：正在扫描    false：扫描未占用
	 */
	public abstract boolean GetScannerIsScanning();
	
	/**
	 * 返回扫描设备ID
	 */
	public abstract int getmScanModel();
	
	

	/**
	 * 系统重启
	 */
	public abstract void SetSystemReboot();

	/**
	 * 系统关机
	 */
	public abstract void SetSystemShutdown();

	/**
	 * 设置系统时间;
	 * 
	 * @param mm
	 *            1970到现在的毫秒时间值的字符串
	 */
	public abstract void SetSystemTime(String mm);

	/**
	 * 设置机唯一码
	 * 
	 * @param code
	 *            机器码字符串
	 */
	public abstract void SetMachineCode(String code);

	/**
	 * 获取唯一码
	 * 
	 * @return 返回机器码字符串
	 */
	

	public abstract String GetMachineCode();

	
/**
 * 说明：以下是一些系统定制功能
 * 
 * 
 * ***********************************************************************************/

	/**
	 *屏蔽物理按键(扫描键除外)
	 */
	public abstract void disableKeypad();
	
	/*自定义屏蔽物理按键
	参数String：要屏蔽的按键 以逗号隔开，例如屏蔽menu键和方向上键  eg：
	 ""+android.view.KeyEvent.KEYCODE_MENU+","+android.view.KeyEvent.KEYCODE_DPAD_UP+"
	*/
	public abstract void disableKeypadEnableCustom(String customstr);
	/**
	 *使能物理按键（所有按键）
	 */
	public abstract void enableKeypad();
	/**
	 *使能物理按键音
	 */
  public abstract void enableKeydownTone();
  /**
  *获取物理按键音状态   1 or 0
  */
	public abstract int GetStatusKeydownTone();
	/**
	 *关闭物理按键音
	 */
	public abstract void disableKeydownTone();

	/**
	 * 屏蔽状态栏下拉
	 * 说明：不允许状态栏进行下拉
	 */
	public abstract void TurnOffStatusBarExpand();
	
	/**
	 * 屏蔽状态栏下拉
	 * @return  1 使能允许，0禁止下拉
	 */
	public abstract int GetStatusBarExpand();


	/**
	 * 使能状态栏下拉
	 * 说明：允许状态栏进行下拉
	 */
	public abstract void TurnOnStatusBarExpand();
	/**
	 * 屏蔽USB debug
	 * 说明：关闭usb调试功能
	 */
	public abstract void TurnOffUSBDebug();
	/**
	 * 屏蔽USB debug
	 * @return 1 打开， 0 未打开
	 */
	public abstract int GetStatusUSBDebug();
	

	
	/**
	 * 使能usb debug
	 * 说明：打开usb调试功能
	 */
	public abstract void TurnOnUSBDebug();
	/**
	 * 屏蔽安装APK
	 * 说明：不允许安装第三方apk
	 */
	public abstract void TurnOffInstallManager();
	
	/**
	 * 屏蔽安装APK
	 * @return 1 允许， 0 不允许安装
	 */
	public abstract int GetStatusInstallManager();

	
	/**
	 * 使能安装APK
	 * 说明：允许安装第三方apk
	 */
	public abstract void TurnOnInstallManager();
	
	
	/**
	 * 使能触摸解锁
	 * 说明：恢复触摸解锁
	 */
	public abstract void TurnOnScreenLock();
	

	/**
	 * 
	 * @return 1 使能解锁， 0禁止解锁 
	 */
	public abstract int GetStatusScreenLock();

	/**
	 * 禁止触摸解锁
	 * 说明：待机唤醒不需要触摸解锁
	 */
	public abstract void TurnOffScreenLock();
	

	
	/**
	 * 配置唤醒源
	 * @return 1 电源键唤醒	0 任意键唤醒
	 */
	public abstract int GetStatusWakeUp();


	/**
	 * 配置电源键唤醒
	 * 
	 */
	public abstract void CfgPowerKeyWakeUp();
	/**
	 * 配置任意按键唤醒
	 * 说明：
	 */
	public abstract void CfgAnyKeyWakeUp();

	/**
	 * 使能触摸屏
	 * 说明：触摸屏去掉触摸功能
	 */
	public abstract void Disable_touch_screen();
	
	/**
	 * 禁止使用触摸屏
	 * 说明：恢复触摸屏触摸功能
	 */
	public abstract void Enable_touch_screen();
	
	/**
	 * 触摸屏开关
	 * @return 1开，0 关
	 */
	public abstract int GetStatusTouch_screen();
	
	
	
	/**
	 * 安装apk
	 * @param apkPath	为文件路径,请确保路径及文件的完整性;
	 * @param runAfterFinished 为true时,Apk安装完成之后会自动运行;为false时,Apk安装完成之后不运行
	 */
	public abstract void StoJNI_InstallApkWithSilence(String apkPath,boolean runAfterFinished);

	/**
	 * 开关gps
	 * @param set true 开，false 关
	 */
	public abstract void TurnOnOffGPS(boolean set);
	
	/**
	 * 屏蔽 / 使能 浏览器访问
	 */
	public abstract void TurnOnOffBrowser(boolean set);

	/**
	 * 禁止使用触摸屏Home键
	 * 说明：触摸屏去掉Home键触摸功能
	 */
	public abstract void Disable_home_touch_screen();
	/**
	 * 使用触摸屏Home键
	 * 说明：恢复触摸屏Home键触摸功能
	 */
	public abstract void Enable_home_touch_screen();

	/**
	 * 触摸屏Home键开关，获取触摸屏上Home键的状态
	 * @return 1开，0 关
	 */
	public abstract int GetStatusTouch_Home_screen();

	/**
	 * 禁止使用触摸屏menu键
	 * 说明：触摸屏去掉menu键触摸功能
	 */
	public abstract void Disable_menu_touch_screen();

	/**
	 * 使用触摸屏MENU键
	 * 说明：恢复触摸屏MENU键触摸功能
	 */
	public abstract void Enable_menu_touch_screen();
	/**
	 * 触摸屏Menu键开关，获取触摸屏上menu键的状态
	 * @return 1开，0 关
	 */
	public abstract int GetStatusTouch_Menu_screen();

	/**
	 * 禁止使用触摸屏back键
	 * 说明：触摸屏去掉back键触摸功能
	 */
	public abstract void Disable_back_touch_screen();

	/**
	 * 使用触摸屏BACK键
	 * 说明：恢复触摸屏BACK键触摸功能
	 */
	public abstract void Enable_back_touch_screen();

	/**
	 * 触摸屏Back键开关，获取触摸屏上back键的状态
	 * @return 1开，0 关
	 */
	public abstract int GetStatusTouch_Back_screen();
	
	public abstract void modifyAudio();
	
	public abstract void setRegister();

}