안 드 로 이 드 못 자동 카드 기능 실현

미리 준비 하 다
우선 안 드 로 이 드 폰 을 계속 사용 하지 않 고 회사 전원 을 꽂 아야 합 니 다.못 을 다운로드 하고 과속 카드 로 설정 합 니 다.

자동 열기
우 리 는 단지 하나의 서 비 스 를 시작 해 야 하 며,정시 에 못 을 열 고 다시 돌아 오 면 된다.
꺼짐 방지

이 화 웨 이 휴대 전 화 는 영원히 화면 을 멈 추 지 않 는 옵션 이 없 기 때문에 우 리 는 자동 으로 화면 을 멈 추 지 않도록 설정 해 야 한다.

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //        
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.activity_main);
  }
못 을 열 고 출석 한 후에 돌아오다.
핵심 프로그램

/**
   * 
   * @param packageName   
   */
  public void openApplication(String packageName) {
    PackageManager packageManager = getPackageManager();
    PackageInfo pi = null;
    try {
      pi = packageManager.getPackageInfo(packageName, 0);
    } catch (PackageManager.NameNotFoundException e) {
    }
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    resolveIntent.setPackage(pi.packageName);
    List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0);
    ResolveInfo resolveInfo = apps.iterator().next();
    if (resolveInfo != null) {
      String className = resolveInfo.activityInfo.name;
      Intent intent = new Intent(Intent.ACTION_MAIN);
      intent.addCategory(Intent.CATEGORY_LAUNCHER);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      ComponentName cn = new ComponentName(packageName, className);
      intent.setComponent(cn);
      startActivity(intent);
    }
  }
cmd 를 열 어 못 의 가방 이름 을 찾 습 니 다.
adb devices

adb shell

pm list package|grep alibaba 는 알 리 바 바 와 관련 된 모든 가방 이름 을 찾 을 수 있 고 pm list package 에서 모든 가방 이름 을 찾 을 수 있 습 니 다.

//     
String packageName = "com.alibaba.android.rimet";
          openApplication(packageName);

//   2s,    
try {
            Thread.sleep(2000); 
          } catch (InterruptedException e) {
            e.printStackTrace();
          }

//       app
String packageNameNew = "com.example.dingding";
          openApplication(packageNameNew);
service 를 만들어 자동 으로 카드 를 찍 고 자바 의 cron4j 라 이브 러 리 를 사용 하여 정시 작업 을 수행 합 니 다.이전 블 로 그 를 참조 할 수 있 습 니 다.JFinal 은 cron4j 로 정시 임 무 를 수행 합 니 다.
  • cron4j.jar 다운로드 주소
  • 
    public class DingService extends Service {
    
      private final String TAG = "DingService";
      
      @Override
      public IBinder onBind(Intent intent) {
        return null;
      }
    
      @Override
      public void onCreate() {
        super.onCreate();
    
        Log.e(TAG, "Service Start!");
    
        ClockThread ct = new ClockThread();
        ct.start();
    
      }
    
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
      }
    
      @Override
      public void onDestroy() {
        super.onDestroy();
      }
    
      /**
       *
       * @param packageName   
       */
      public void openApplication(String packageName) {...}
    
      public class ClockThread extends Thread {
    
        public void run() {
    
          Scheduler scheduler = new Scheduler();
          
          //            7:50,11:50,13:50,17:50
          scheduler.schedule("50 7,11,13,17 * * mon,tue,wed,thu,fri", new Thread() {
            @Override
            public void run() {
    
              String packageName = "com.alibaba.android.rimet";
              openApplication(packageName);
    
              try {
                Thread.sleep(2000); 
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
    
              String packageNameNew = "com.example.dingding";
              openApplication(packageNameNew);
    
            }
          });
    
          scheduler.start();
    
        }
    
      }
    }
    마지막 으로 MainActivity 에서 서 비 스 를 시작 하면 됩 니 다.

    무 작위 시간
    카드 를 더욱 진실 하 게 하기 위해 서 는 매일 카드 를 찍 는 시간 이 가능 한 한 다르다.우 리 는 Scheduler(스케줄 러)로 매일 아침 6 시 와 같은 고정 시간 에 네 개의 시간 무 작위 스케줄 러 임 무 를 만들어 매일 카드 를 완성 합 니 다.
    
      public class ClockThread extends Thread {
    
        public void run() {
    
          scheduler = new Scheduler();
    
          scheduler.schedule("0 6 * * mon,tue,wed,thu,fri", new Thread() {
            @Override
            public void run() {
    
              if(scheduler1 != null){
                scheduler1.stop();
                scheduler1 = null;
              }
              if(scheduler2 != null){
                scheduler2.stop();
                scheduler2 = null;
              }
              if(scheduler3 != null){
                scheduler3.stop();
                scheduler3 = null;
              }
              if(scheduler4 != null){
                scheduler4.stop();
                scheduler4 = null;
              }
              //    7:00 ~ 7:27    
              // scheduler1 scheduler.schedule(new Random().nextInt(28)+" 7 * * *",new Thread())
              //    11:30 ~ 11:57    
              // scheduler2 scheduler.schedule((30 + new Random().nextInt(28))+" 11 * * *",new Thread())
              //    13:00 ~ 13:27    
              // scheduler3 scheduler.schedule(new Random().nextInt(28)+" 13 * * *",new Thread())
              //    17:30 ~ 17:57    
              // scheduler4 scheduler.schedule((30 + new Random().nextInt(28))+" 17 * * *",new Thread())
    
    
            }
          });
    
          scheduler.start();
    
        }
    
      }

    이상 은 안 드 로 이 드 가 못 자동 카드 기능 을 실현 하 는 상세 한 내용 입 니 다.안 드 로 이 드 못 자동 카드 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기