Global annotation and graffiti

Global annotation and graffiti

Ô´Âë¼ò½é

¿ ÉÒÔʵÏÖÈ«¾ÖÅú×¢£¬ÔÚÈκνçÃæ¶¼¿ ÉÒÔ½«Åú×¢±Êµ÷³öÀ´½øÐÐÅú×¢£¬Ö§³Ö¸ü»»±ÊµÄÑÕÉ«£¬´Öϸ£¬Ö§³ÖÈý¸öÊÖÖ¸²Á³ý£¬¿ ÉÒÔ¸ù¾ÝÊÖÖ¸¼ä¾à¾ö¶¨ÏðÆ¤µÄÃæ»ý£¬·½±ãÓÖÊ¡ ÐÄ£¡
Ô´ÂëÔËÐнØÍ¼

Ô´ÂëÆ¬¶Î£º

  1. package com.hht.annotation;
  2. import java.io.File;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.List;
  6.   
  7. import android.app.AlertDialog;
  8. import android.app.Dialog;
  9. import android.app.Service;
  10. import android.content.BroadcastReceiver;
  11. import android.content.ComponentName;
  12. import android.content.Context;
  13. import android.content.DialogInterface;
  14. import android.content.Intent;
  15. import android.content.IntentFilter;
  16. import android.content.ServiceConnection;
  17. import android.content.SharedPreferences;
  18. import android.content.SharedPreferences.Editor;
  19. import android.gesture.GestureLibrary;
  20. import android.graphics.Color;
  21. import android.graphics.PixelFormat;
  22. import android.graphics.drawable.BitmapDrawable;
  23. import android.net.Uri;
  24. import android.os.Bundle;
  25. import android.os.Environment;
  26. import android.os.Handler;
  27. import android.os.IBinder;
  28. import android.os.Message;
  29. import android.os.Messenger;
  30. import android.os.RemoteException;
  31. import android.util.Log;
  32. import android.view.Gravity;
  33. import android.view.LayoutInflater;
  34. import android.view.View;
  35. import android.view.View.OnClickListener;
  36. import android.view.View.OnLongClickListener;
  37. import android.view.Window;
  38. import android.view.WindowManager;
  39. import android.view.WindowManager.LayoutParams;
  40. import android.view.animation.Animation;
  41. import android.view.animation.AnimationUtils;
  42. import android.widget.Button;
  43. import android.widget.CompoundButton;
  44. import android.widget.CompoundButton.OnCheckedChangeListener;
  45. import android.widget.ImageView;
  46. import android.widget.PopupWindow;
  47. import android.widget.PopupWindow.OnDismissListener;
  48. import android.widget.RadioButton;
  49. import android.widget.RadioGroup;
  50. import android.widget.TextView;
  51. import android.widget.ToggleButton;
  52.   
  53. import com.hht.annotation.whiteboard.WhiteboardView;
  54. import com.hht.annotation.R;
  55.   
  56.   
  57. public   class SuspendService extends Service implements OnClickListener,
  58. OnCheckedChangeListener,OnLongClickListener {
  59. private WhiteboardView mView;
  60. private WindowManager wm;
  61. private LayoutParams wmParams;
  62. private LayoutParams wmParamsBg,wmGestrueBg,wmPPtLayout;
  63. private LayoutParams wmview_l;
  64. private ImageView arror_l;
  65. protected   boolean isMove = false ;
  66. protected   float mXd;
  67. protected   float mYd;
  68. private View bgView,ppt_left_and_right,gestrueBg,flort,homebar;
  69. private ToggleButton tg_black_l,tg_bule_l,tg_red_l, tg_glitterpen_orange,tg_glitterpen_green,tg_glitterpen_yellow,tg_laserpen_red, tg_eraser_l,tg_allapp;
  70. private Button home_screenshot, home_usb, home_settings, home_dockbar_ic_browser,btn_app2;
  71.       
  72. private PopupWindow pw_usb,pw_l,pw_menu,pw_pen,pw_glitterpen,pw_laserpen;
  73. private View contentView_l,contentView_pw_pen,contentView_pw_glitterpen;
  74. private View layout_clear_l;
  75. private View layout_screenshot_l;
  76. private View layout_print_l;
  77.       
  78. private Animation tool_in_l_anim, tool_out_l_anim;
  79.       
  80. private Button btn_per,btn_next,btn_undo_l,btn_screenshot,btn_toolbox,btn_down,btn_menu,btn_home_down;
  81.       
  82. private   boolean isPencilChecked = false ; // ʾ Ƿ ѡ  
  83. private BroadcastReceiver myReceiver;
  84.       
  85. private   static   final   int HIDESMARTBAR = 1 ;
  86. private   static   final   int STARTSMARTBAR = 2 ;
  87. private   static   final   int SCREENSHOT = 3 ;
  88. protected   static   final   int CHECKEDPEN = 4 ;
  89. private   static   final   int HIDEINTVSETTINGS = 8 ;
  90. private   static   final   int CLEARVIEW = 12 ;
  91. private   static   final   int ISSCREENSHOTING = 13 ;
  92. private   static   final   int WHITEBOARDSCREENSHOT = 15 ;
  93. private   static   final   int SHOWSMARTBAR = 17 ;
  94. private   static   final   int SHOWLAUCHER = 18 ;
  95. private   static   final   int SHOWALLAPP = 19 ;
  96.       
  97. protected   int size = 5 ;
  98. protected   int pen = 0 ;
  99. protected   int color = Color.BLACK;
  100.       
  101. protected   int glitterpen = 7 ;
  102. protected   int glitterpenSize = 30 ;
  103. protected   int glitterpenColor = Color.parseColor( "#2bdb00" );
  104.       
  105. protected   int laserpen = 7 ;
  106. protected   int laserpenSize = 30 ;
  107. protected   int laserpenColor = Color.GREEN;
  108.       
  109. private ToggleButton currentToggleButton_l = null ;
  110. private String mStrSavePath = "" ;
  111. private   boolean mIsPrinting = false ;
  112. public   static   final String PRINT_PREPARE_ACTION = "com.hht.printer.prepare" ;
  113.       
  114. public   static    boolean ActionShowScreenshots = false ;
  115. private    boolean isViewShow = false ;
  116. public   static List<string> imagesList;
  117.       
  118. private GestureLibrary mLibrary;
  119. private    boolean needShowAnnotationBar = false ;
  120. private    boolean needTouchPen = false ;
  121. private    boolean needShowLeftAndRight;
  122.       
  123. String cmpNameTemp = null ;
  124. protected   boolean isFileBrowser;
  125. @Override  
  126. public IBinder onBind(Intent arg0) {
  127.           
  128. return   null ;
  129. }
  130.       
  131. private Handler handler = new Handler() {
  132.           
  133. @Override  
  134. public   void handleMessage(Message msg) {
  135. switch (msg.what) {
  136. case SHOWSMARTBAR:
  137. break ;
  138. case STARTSMARTBAR:
  139.                       
  140. if (!isFileBrowser && !isWidgetBar){
  141.                           
  142. if (isHome){
  143. homebar.setVisibility(View.VISIBLE);
  144. flort.setVisibility(View.GONE);
  145. isShowPw_l = false ;
  146. dismissPopupWindow_l();
  147. checkIfshowView( false , false );
  148. hiteGesture( true );
  149. ppt_left_and_right.setVisibility(View.GONE);
  150. } else {
  151. homebar.setVisibility(View.GONE);
  152. flort.setVisibility(View.VISIBLE);
  153. if (pw_usb != null && pw_usb.isShowing()) {
  154. pw_usb.dismiss();
  155. }
  156. }
  157.                           
  158. if (isWhiteBoard ||isRecents){
  159. hiteGesture( true );
  160. }
  161. }
  162. Log.e( "Others77" , "isScreenshot" +isScreenshot+ "currentToggleButton_l" +currentToggleButton_l);
  163. break ;
  164. case HIDESMARTBAR:
  165.               
  166. tg_eraser_l.setChecked( false );
  167. setPenciIsChecked(tg_black_l,tg_bule_l,tg_red_l,tg_glitterpen_orange,tg_glitterpen_green,tg_glitterpen_yellow,tg_laserpen_red);
  168. bgView.setVisibility(View.GONE);
  169. mView.setVisibility(View.GONE);
  170. flort.setVisibility(View.GONE);
  171. homebar.setVisibility(View.GONE);
  172. isShowPw_l = false ;
  173. dismissPopupWindow_l();
  174. if (pw_usb != null && pw_usb.isShowing()) {
  175. pw_usb.dismiss();
  176. }
  177. break ;
  178. case HIDEINTVSETTINGS:
  179. Intent wintent = new Intent( "mstar.tv.broadcast.service" );
  180. wintent.putExtra(Intent.EXTRA_KEY_EVENT, 920 );
  181. sendOrderedBroadcast(wintent, null );
  182. noHide = true ;
  183. hiteSmartBar( false );
  184. break ;
  185.                   
  186. case SCREENSHOT:
  187. takeScreenshot( true );
  188. break ;
  189. case WHITEBOARDSCREENSHOT:
  190.                   
  191. Intent intent = new Intent( "com.hht.whiteboard.getaction" );
  192. intent.putExtra( "snapshot" , 1 );
  193. sendBroadcast(intent);
  194. break ;
  195. case ISSCREENSHOTING:
  196. isScreenshoting = false ;
  197. btn_screenshot.setEnabled( true );
  198. if (layout_print_l!= null ){
  199. layout_print_l.setEnabled( true );
  200. }
  201. break ;
  202. case CHECKEDPEN:
  203. if (currentToggleButton_l!= null ){
  204.                       
  205. currentToggleButton_l.setChecked( false );
  206. }
  207. hiteGesture( true );
  208. checkIfshowView( false , false );
  209. break ;
  210. case CLEARVIEW:
  211. clear();
  212. break ;
  213. case SHOWALLAPP:
  214. sendBroadcast( new Intent( "INTENT.ACTION.SHOW.ALLAPP" ));
  215. break ;
  216. case SHOWLAUCHER:
  217. sendBroadcast( new Intent( "INTENT.ACTION.SHOW.HOME" ));
  218. break ;
  219. default :
  220. break ;
  221.                   
  222. }
  223. super .handleMessage(msg);
  224. }
  225. };
  226. private   boolean removeAllView;
  227. private   boolean removeView;
  228. private   boolean noHide;
  229. private   boolean isScreenshot;
  230. private   boolean isHome;
  231. private   boolean isWhiteBoard = false ;
  232. public   boolean isRecents;
  233. public   boolean isWidgetBar;
  234. private RadioButton myRadioButton2;
  235. private   boolean isCrash;
  236. private   boolean isScreenshoting;
  237. private   boolean isShowPw_l;
  238. private   boolean isShowPw_l2;
  239. @Override  
  240. public   void onCreate() {
  241.           
  242. sp = getSharedPreferences( "smart_config" , MODE_PRIVATE);
  243.           
  244. tool_in_l_anim = AnimationUtils
  245. .loadAnimation( this , R.anim.translate_in);
  246. tool_out_l_anim = AnimationUtils.loadAnimation( this ,
  247. R.anim.translate_out);
  248. //ppt  
  249. ppt_left_and_right = LayoutInflater.from( this ).inflate(R.layout.ppt_left_and_right, null );
  250. btn_per = (Button) ppt_left_and_right.findViewById(R.id.btn_per);
  251. btn_next = (Button) ppt_left_and_right.findViewById(R.id.btn_next);
  252. btn_per.setOnClickListener( this );
  253. btn_next.setOnClickListener( this );
  254.           
  255. // Ҷ ߵ layout  
  256. flort = LayoutInflater.from( this ).inflate(R.layout.flort_pad_lf, null );
  257. isShowPw_l = false ;
  258. dismissPopupWindow_l();
  259. if (pw_usb != null && pw_usb.isShowing()) {
  260. pw_usb.dismiss();
  261. }
  262. // ؼ ij ʼ ͼ  
  263. tg_black_l = (ToggleButton) flort.findViewById(R.id.tg_black_l);
  264. currentToggleButton_l = tg_black_l;
  265. tg_black_l.setChecked( true );
  266. tg_bule_l = (ToggleButton) flort.findViewById(R.id.tg_bule_l);
  267. tg_red_l = (ToggleButton) flort.findViewById(R.id.tg_red_l);
  268. tg_glitterpen_orange = (ToggleButton) flort.findViewById(R.id.tg_glitterpen_orange);
  269. tg_glitterpen_green = (ToggleButton) flort.findViewById(R.id.tg_glitterpen_green);
  270. tg_glitterpen_yellow = (ToggleButton) flort.findViewById(R.id.tg_glitterpen_yellow);
  271. tg_laserpen_red = (ToggleButton) flort.findViewById(R.id.tg_laserpen_red);
  272. tg_eraser_l = (ToggleButton) flort.findViewById(R.id.tg_eraser_l);
  273.           
  274.           
  275. error_l = (ImageView) flort.findViewById(R.id.error_l);
  276. btn_undo_l = (Button) flort.findViewById(R.id.btn_undo_l);
  277. btn_screenshot = (Button) flort.findViewById(R.id.btn_screenshot);
  278. btn_toolbox = (Button) flort.findViewById(R.id.btn_toolbox);
  279. btn_down = (Button) flort.findViewById(R.id.btn_down);
  280. btn_menu = (Button) flort.findViewById(R.id.btn_menu);
  281.           
  282. tg_black_l.setOnCheckedChangeListener( this );
  283. tg_bule_l.setOnCheckedChangeListener( this );
  284. tg_red_l.setOnCheckedChangeListener( this );
  285. tg_glitterpen_orange.setOnCheckedChangeListener( this );
  286. tg_glitterpen_green.setOnCheckedChangeListener( this );
  287. tg_glitterpen_yellow.setOnCheckedChangeListener( this );
  288. tg_laserpen_red.setOnCheckedChangeListener( this );
  289. tg_eraser_l.setOnCheckedChangeListener( this );
  290. tg_bule_l.setOnCheckedChangeListener( this );
  291.           
  292. tg_black_l.setOnLongClickListener( this );
  293. tg_bule_l.setOnLongClickListener( this );
  294. tg_red_l.setOnLongClickListener( this );
  295. tg_glitterpen_orange.setOnLongClickListener( this );
  296. tg_glitterpen_green.setOnLongClickListener( this );
  297. tg_glitterpen_yellow.setOnLongClickListener( this );
  298. tg_bule_l.setOnLongClickListener( this );
  299. tg_laserpen_red.setOnLongClickListener( this );
  300.           
  301. error_l.setOnClickListener( this );
  302. btn_undo_l.setOnClickListener( this );
  303. btn_screenshot.setOnClickListener( this );
  304. btn_toolbox.setOnClickListener( this );
  305. btn_down.setOnClickListener( this );
  306. btn_menu.setOnClickListener( this );
  307. // homeBarLayout  
  308. homebar = LayoutInflater.from( this ).inflate(R.layout.homebar, null );
  309. // ؼ ij ʼ ͼ  
  310. home_screenshot = (Button) homebar.findViewById(R.id.home_screenshot);
  311. home_usb = (Button) homebar.findViewById(R.id.home_usb);
  312. home_settings = (Button) homebar.findViewById(R.id.home_settings);
  313. home_dockbar_ic_browser = (Button) homebar.findViewById(R.id.home_dockbar_ic_browser);
  314.           
  315. btn_app2 = (Button) homebar.findViewById(R.id.btn_app2);
  316. tg_allapp = (ToggleButton) homebar.findViewById(R.id.tg_allapp);
  317. btn_home_down = (Button) homebar.findViewById(R.id.btn_home_down);
  318.           
  319.           
  320. home_screenshot.setOnClickListener( this );
  321. home_usb.setOnClickListener( this );
  322. home_settings.setOnClickListener( this );
  323. home_dockbar_ic_browser.setOnClickListener( this );
  324. btn_app2.setOnClickListener( this );
  325. tg_allapp.setOnCheckedChangeListener( this );
  326. btn_home_down.setOnClickListener( this );
  327.           
  328.           
  329. bgView = LayoutInflater.from( this ).inflate(R.layout.annotation_bg, null );
  330. gestrueBg = LayoutInflater.from( this ).inflate(R.layout.gestrue_bg, null );
  331. //  
  332. mView = new WhiteboardView(getBaseContext());
  333. mView.setBackgroundColor(Color.TRANSPARENT);
  334. mView.setFocusable( true );
  335.           
  336. mView.requestFocus();
  337.           
  338. mView.setFocusableInTouchMode( true );
  339. // ʽ ӻ ÈÉʵ ֵ §¹  
  340. wm = (WindowManager) getApplicationContext().getSystemService( "window" );
  341. initUI();
  342.           
  343. }
  344. private   void initUI(){
  345. smartbar_translate_in = AnimationUtils.loadAnimation( this ,
  346. R.anim.smartbar_translate_in);
  347. smartbar_translate_out = AnimationUtils.loadAnimation( this ,
  348. R.anim.smartbar_translate_out);
  349.           
  350. wmParamsBg = new WindowManager.LayoutParams();
  351. wmParamsBg.type = 2002 ;
  352. wmParamsBg.format = 1 ;
  353. wmParamsBg.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  354. | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
  355. wmParamsBg.width = WindowManager.LayoutParams.FILL_PARENT;
  356. wmParamsBg.height = WindowManager.LayoutParams.FILL_PARENT;
  357. bgView.setVisibility(View.VISIBLE);
  358. wm.addView(bgView, wmParamsBg);
  359.           
  360. wmGestrueBg = new WindowManager.LayoutParams();
  361. wmGestrueBg.type = 2002 ;
  362. wmGestrueBg.format = 1 ;
  363. wmGestrueBg.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  364. | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
  365. wmGestrueBg.width = WindowManager.LayoutParams.FILL_PARENT;
  366. wmGestrueBg.height = WindowManager.LayoutParams.FILL_PARENT;
  367. wm.addView(gestrueBg, wmGestrueBg);
  368. gestrueBg.setVisibility(View.GONE);
  369.           
  370. wmPPtLayout = new WindowManager.LayoutParams();
  371. wmPPtLayout.type = 2002 ;
  372. wmPPtLayout.format = PixelFormat.TRANSLUCENT;
  373. // wmview_l.x = 200;  
  374. wmPPtLayout.y = 215 ;
  375. wmPPtLayout.gravity = Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM;
  376. wmPPtLayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  377. | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
  378. wmPPtLayout.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
  379. wmPPtLayout.width = WindowManager.LayoutParams.WRAP_CONTENT;
  380. wmPPtLayout.height = WindowManager.LayoutParams.WRAP_CONTENT;
  381. wm.addView(ppt_left_and_right, wmPPtLayout);
  382. ppt_left_and_right.setVisibility(View.GONE);
  383.           
  384. wmParams = new WindowManager.LayoutParams();
  385. wmParams.type = 2002 ;
  386. wmParams.format = 1 ;
  387. wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  388. | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
  389. wmParams.width = WindowManager.LayoutParams.FILL_PARENT;
  390. wmParams.height = WindowManager.LayoutParams.FILL_PARENT;
  391. mView.setVisibility(View.VISIBLE);
  392. wm.addView(mView, wmParams);
  393.           
  394. // ߱ ѡ ˵  
  395. wmview_l = new WindowManager.LayoutParams();
  396. wmview_l.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  397. | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
  398. wmview_l.gravity = Gravity.LEFT|Gravity.TOP;
  399. wmview_l.format = PixelFormat.TRANSLUCENT;
  400. // wmview_l.x = 800;  
  401. wmview_l.y = 98 ;
  402. wmview_l.width =WindowManager.LayoutParams.WRAP_CONTENT;;
  403. wmview_l.height = WindowManager.LayoutParams.WRAP_CONTENT;; // λ ƶ Ѫˢ £ ȡ պ ͸  
  404. wmview_l.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
  405. wm.addView(flort, wmview_l);
  406. wmview_l.height = 150 ;
  407. wm.addView(homebar, wmview_l);
  408. homebar.setVisibility(View.GONE);
  409.           
  410. if (isPencilChecked == false ) {
  411. isViewShow = false ;
  412. }
  413. Log.e( "Others77" , "oncreate==isFileBrowser=" +isFileBrowser+ "isWhiteBoard=" +isWhiteBoard+ "isHome=" +isHome+ "====" );
  414.           
  415. // չ㲥ز  
  416. myReceiver = new MyReceiver();
  417. filter = new IntentFilter();
  418. filter.addAction( "com.hht.hidesmartbar" );
  419. filter.addAction( "com.hht.hidesmartbar.for.ppt" );
  420. filter.addAction( "com.hht.showsmartbar" );
  421. filter.addAction( "com.widget.open" );
  422. filter.addAction( "com.widget.close" );
  423. filter.addAction( "com.hht.hidemartbar.new" );
  424. filter.addAction( "com.hht.hidemartbar.system" );
  425. filter.addAction( "com.hht.toolbar.anno.paint_gone" );
  426. filter.addAction( "com.hht.toolbar.anno.paint_show" );
  427. filter.addAction( "com.hht.showmartbar.system" );
  428. filter.addAction( "com.hht.showmartbar.system.recents" );
  429. filter.addAction( "com.hht.hidemartbar.new.home" );
  430. filter.addAction( "com.hht.showmartbar.new.home" );
  431. filter.addAction( "com.hht.showmartbar.new.screenshot" );
  432.           
  433. filter.addAction( "com.hht.hidemartbar.new.fb" );
  434. filter.addAction( "com.hht.showmartbar.new.fb" );
  435. filter.addAction( "com.hht.showmartbar.new.wb" );
  436. filter.addAction( "com.hht.showmartbar.new.wb.set" );
  437. filter.addAction( "com.hht.showmartbar.new.crash" );
  438. filter.addAction( "com.hht.showmartbar.new" );
  439. filter.addAction( "com.hht.hidesmartbar.dismisspop" );
  440. filter.setPriority( 1000 );
  441. registerReceiver(myReceiver, filter);
  442.           
  443. }
  444. private   void checkIfshowView( boolean showView, boolean screenshot){
  445. if (showView){
  446. if (flort.getVisibility() ==View.GONE && homebar.getVisibility() ==View.GONE ){
  447. } else {
  448. mView.setVisibility(View.VISIBLE);
  449. bgView.setVisibility(View.VISIBLE);
  450. }
  451. } else {
  452. if (screenshot){
  453. mView.setVisibility(View.INVISIBLE);
  454. bgView.setVisibility(View.INVISIBLE);
  455. } else {
  456. mView.setVisibility(View.GONE);
  457. bgView.setVisibility(View.GONE);
  458. }
  459. }
  460. }
  461. private   void isLaucher() {
  462. noHide = false ;
  463. checkIfshowView( false , false );
  464. hiteGesture( true );
  465. homebar.setVisibility(View.VISIBLE);
  466. flort.setVisibility(View.GONE);
  467. dismissPopupWindow_l();
  468. tg_eraser_l.setChecked( false );
  469. setPenciIsChecked(tg_black_l,tg_bule_l,tg_red_l,tg_glitterpen_orange,tg_glitterpen_green,tg_glitterpen_yellow,tg_laserpen_red);
  470. Log.e( "Others77" , "1515" );
  471.           
  472. }
  473. private   void hiteGesture( boolean hite) {
  474. if (hite){
  475. ppt_left_and_right.setVisibility(View.GONE);
  476. gestrueBg.setVisibility(View.GONE);
  477. } else {
  478. ppt_left_and_right.setVisibility(View.VISIBLE);
  479. gestrueBg.setVisibility(View.VISIBLE);
  480. }
  481.           
  482. }
  483. class MyReceiver extends BroadcastReceiver {
  484.           
  485. @Override  
  486. public   void onReceive(Context context, Intent intent) {
  487.               
  488. Editor editor = sp.edit();
  489.               
  490. if (intent.getAction().equals( "com.hht.hidesmartbar.dismisspop" )){
  491. if (pw_l != null && pw_l.isShowing()) {
  492. pw_l.dismiss();
  493. }

Ô´ÂëµØÖ·£ºhttp://down..com/data/1978601

<<:  Nine-grid password lock entry program

>>:  Cocos 2d-JS Chinese version API documentation is officially launched

Recommend

Operation and promotion: Thoughts on the 3-fold growth of App users

Scenario—Creativity—Benefit Point—Cycle—Channel, ...

Attention! Autumn is the peak season for allergies! How to deal with it?

After the fall, some people appeared Itchy eyes a...

Google Pixel C: Probably the best Android tablet yet

Google released its first 2-in-1 tablet computer, ...

What are the essential factors for Tik Tok promotion?

From Haidilao to Daancha, Douyin has demonstrated...

To 2019: Future survival rules for public accounts

2018. The expansion rate of some public accounts ...

Why did NetEase Cloud Music become so popular? How did Ding Lei hit the vital point of users?

In the TV series “锵锵三人行”, financial writer Wu Xia...

Use UIVisualEffectView to add special effects to views

Use UIVisualEffectView to add special effects to ...

Is iPhone XR really cost-effective? Here are 3 reasons to give it up

This week, the iPhone XR, which is known as the &...

29 suggestions before launching your brand on Xiaohongshu

Xiaohongshu’s strategy has changed. Last year, it...

How to take advantage of the hot summer season to advertise?

In the advertising market, how to seize special o...