123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- package com.epson.mobilephone.common.wifidirect;
- import android.app.Service;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.net.wifi.WifiManager;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import androidx.appcompat.app.AppCompatActivity;
- public abstract class ActivityConnectBase extends AppCompatActivity {
- public static final String APNAME = "com.epson.iprint.wifidirect.apname";
- public static final String APPASS = "com.epson.iprint.wifidirect.appass";
- public static final int CONNECTING_TIMEOUT = 30;
- public static final String CREATE = "com.epson.iprint.wifidirect.create";
- protected static final int ID_ENABLED_LOCATIONSETTINGS = 2;
- protected static final int ID_ENABLED_WIFI = 1;
- public static final int ID_SHOWWIFISETTINGS = 4;
- public static final int ID_SHOWWIFISETTINGS_PROFILEFAILED = 5;
- public static final String NEEDINFO = "com.epson.iprint.wifidirect.needinfo";
- public static final int RESULT_ERROR = 2;
- public static final int RESULT_USERCANCEL = 1;
- public static final String SHOWERROR = "com.epson.iprint.wifidirect.showerror";
- public static final String SHOWTIP = "com.epson.iprint.wifidirect.showconnecttip";
- private static final String TAG = "ActivityConnectBase";
- public static final String TIMEOUT = "com.epson.iprint.wifidirect.timeout";
- private static int sLastDetailResult = -1;
- ConnectingObserver connectingObserver = new ConnectingObserver();
- String expectedPrtMacAddr = "";
- WifiManager mWifiManager = null;
- boolean needInfo = false;
- SearchWiFiDirectPrinterTask searchWiFiDirectPrinter = null;
- boolean showConnectedTip = true;
- boolean showErrorDlg = false;
- protected Status status = Status.IDLE;
- String targetSsid = "";
- FindPrinterTask taskFindPrinter = null;
- int timeout = 30;
- enum Status {
- IDLE,
- WIFI_SCANNING,
- WIFI_CONNECTING,
- WIFI_CONNECTED,
- PRINTER_FINDING
- }
- protected abstract void closeWaitingDialog();
- protected abstract void onEnabledWifi();
- protected abstract void onError();
- public static int getLastDetailResult() {
- return sLastDetailResult;
- }
- public static void setLastDetailResult(int i) {
- sLastDetailResult = i;
- }
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- mWifiManager = (WifiManager) getApplicationContext().getApplicationContext().getSystemService(Service.WIFI_SERVICE);
- requestWindowFeature(1);
- searchWiFiDirectPrinter = SearchWiFiDirectPrinterTask.getInstance(this);
- }
- protected void onActivityResult(int i, int i2, Intent intent) {
- super.onActivityResult(i, i2, intent);
- if (i == 1) {
- if (i2 != -1) {
- closeWaitingDialog();
- setResult(0);
- setLastDetailResult(1);
- finish();
- return;
- }
- onEnabledWifi();
- }
- }
- protected void onResume() {
- EPLog.d(TAG, "onResume()");
- super.onResume();
- NfcDispatchUtils.enableForegroundDispatch(this, (IntentFilter[]) null, (String[][]) null);
- EPLog.d(TAG, "addFlags : FLAG_KEEP_SCREEN_ON ");
- getWindow().addFlags(128);
- }
- protected void onPause() {
- EPLog.d(TAG, "onPause()");
- super.onPause();
- NfcDispatchUtils.disableForegroundDispatch(this);
- EPLog.e(TAG, "clearFlags : FLAG_KEEP_SCREEN_ON ");
- getWindow().clearFlags(128);
- }
- protected void onStop() {
- EPLog.d(TAG, "onStop()");
- super.onStop();
- }
- protected void onDestroy() {
- EPLog.d(TAG, "onDestroy()");
- super.onDestroy();
- interrupt();
- }
- public void onBackPressed() {
- EPLog.d(TAG, "onBackPressed()");
- super.onBackPressed();
- interrupt();
- }
- private void interrupt() {
- status = Status.IDLE;
- SearchWiFiDirectPrinterTask searchWiFiDirectPrinterTask = searchWiFiDirectPrinter;
- if (searchWiFiDirectPrinterTask != null) {
- searchWiFiDirectPrinterTask.interrupt();
- searchWiFiDirectPrinter = null;
- }
- interruptConnecting();
- interruptFindingPrinter();
- }
- public void interruptFindingPrinter() {
- FindPrinterTask findPrinterTask = taskFindPrinter;
- if (findPrinterTask != null) {
- findPrinterTask.cancel();
- taskFindPrinter = null;
- }
- }
- protected void interruptConnecting() {
- connectingObserver.interrupt();
- }
- public void onConnectedPrinter(Intent intent) {
- EPLog.d(TAG, "finish():RESULT_OK");
- closeWaitingDialog();
- setResult(-1, intent);
- setLastDetailResult(-1);
- finish();
- }
- public void setupObserver() {
- connectingObserver.start(timeout * 1000);
- }
- class ConnectingObserver {
- AsyncTask<Void, Void, Void> observerTask = null;
- ConnectingObserver() {
- }
- private void start(final int i) {
- interrupt();
- EPLog.d(ActivityConnectBase.TAG, "Start ConnectingObserver");
- observerTask = new AsyncTask<Void, Void, Void>() {
- protected Void doInBackground(Void... voidArr) {
- int i = 0;
- do {
- try {
- if (i >= i) {
- return null;
- }
- Thread.sleep(100);
- i += 100;
- } catch (InterruptedException e) {
- e.printStackTrace();
- return null;
- }
- } while (!isCancelled());
- return null;
- }
- protected void onPostExecute(Void voidR) {
- EPLog.i(ActivityConnectBase.TAG, "Timeout ConnectingObserver");
- onError();
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
- }
- private void interrupt() {
- AsyncTask<Void, Void, Void> asyncTask = observerTask;
- if (asyncTask != null && asyncTask.getStatus() == AsyncTask.Status.RUNNING && !this.observerTask.isCancelled()) {
- EPLog.d(ActivityConnectBase.TAG, "Stop ConnectingObserver");
- observerTask.cancel(false);
- }
- }
- }
- }
|