2

I have splash screen which has count down time. I am assigning time value manually in my example time = 10000.

1)How can I assign value which I am getting from the service to the time variable. 2) How can I compare both the time and then assign the service time to the splash screen activity.

Activity

TextView text1, text2, text3;
// int time= 3600000*8;
int  time = 10000;
public int  Main_time ;
private UsbService usbService;
private EditText editText;
private MyHandler mHandler;
StringBuilder stringBuilder = new StringBuilder();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_screen);
    mHandler = new MyHandler(splash_screen.this);
    splashScreenUseAsyncTask();

    int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

    getWindow().getDecorView().setSystemUiVisibility(mUIFlag);

    text1 = (TextView) findViewById(R.id.tv_hour);
    text2 = (TextView) findViewById(R.id.tv_minute);
    text3 = (TextView) findViewById(R.id.tv_second);
}


private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        switch (intent.getAction()) {
            case UsbService.ACTION_USB_PERMISSION_GRANTED: // USB PERMISSION GRANTED
                Toast.makeText(context, "USB Ready", Toast.LENGTH_SHORT).show();
                break;
            case UsbService.ACTION_USB_PERMISSION_NOT_GRANTED: // USB PERMISSION NOT GRANTED
                Toast.makeText(context, "USB Permission not granted", Toast.LENGTH_SHORT).show();
                break;
            case UsbService.ACTION_NO_USB: // NO USB CONNECTED
                Toast.makeText(context, "No USB connected", Toast.LENGTH_SHORT).show();
                break;
            case UsbService.ACTION_USB_DISCONNECTED: // USB DISCONNECTED
                Toast.makeText(context, "USB disconnected", Toast.LENGTH_SHORT).show();
                break;
            case UsbService.ACTION_USB_NOT_SUPPORTED: // USB NOT SUPPORTED
                Toast.makeText(context, "USB device not supported", Toast.LENGTH_SHORT).show();
                break;
        }
    }
};

private final ServiceConnection usbConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName arg0, IBinder arg1) {
        usbService = ((UsbService.UsbBinder) arg1).getService();
        usbService.setHandler(mHandler);
        //usbService.sendATGetESN();
        //usbService.sendATGetSTART();

        //usbService.sendATGetPC();
        //usbService.sendATGetSTOP();
        usbService.sendATGetACC();


    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        usbService = null;
    }
};

@Override
public void onResume() {
    super.onResume();
    setFilters();  // Start listening notifications from UsbService
    startService(UsbService.class, usbConnection, null); // Start UsbService(if it was not started before) and Bind it
}

@Override
public void onPause() {
    try {
        unregisterReceiver(mUsbReceiver);
        unbindService(usbConnection);
    } catch (IllegalArgumentException ex) {
    }
    super.onPause();

}

@Override
public void onDestroy() {
    try{
        if(mUsbReceiver!=null)
            unregisterReceiver(mUsbReceiver);
    }catch(Exception e){}
    super.onDestroy();
}

private void startService(Class<?> service, ServiceConnection serviceConnection, Bundle extras) {

    Intent serviceIntent = new Intent(this, splash_screen.class);
    this.startService(serviceIntent);
    startService(serviceIntent);

    if (!UsbService.SERVICE_CONNECTED) {
        Intent startService = new Intent(this, splash_screen.class);
        if (extras != null && !extras.isEmpty()) {
            Set<String> keys = extras.keySet();
            for (String key : keys) {
                String extra = extras.getString(key);
                startService.putExtra(key, extra);
            }
        }
        startService(startService);
    }
    Intent bindingIntent = new Intent(this, service);
    bindService(bindingIntent, serviceConnection, Context.BIND_AUTO_CREATE);
}

private void setFilters() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(UsbService.ACTION_USB_PERMISSION_GRANTED);
    filter.addAction(UsbService.ACTION_NO_USB);
    filter.addAction(UsbService.ACTION_USB_DISCONNECTED);
    filter.addAction(UsbService.ACTION_USB_NOT_SUPPORTED);
    filter.addAction(UsbService.ACTION_USB_PERMISSION_NOT_GRANTED);
    registerReceiver(mUsbReceiver, filter);
}

public class MyHandler extends Handler {
    private final WeakReference<splash_screen> mActivity;

    public MyHandler(splash_screen activity) {
        mActivity = new WeakReference<>(activity);
    }

    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case UsbService.MESSAGE_FROM_SERIAL_PORT:
                String data = (String) msg.obj;
                StringBuilder main= mActivity.get().stringBuilder.append(data);
                Main_time = Integer.parseInt(main.toString());
                Log.d("REPLY", "Processing Accumulator List Command22"+Main_time);
                break;

        }


    }

}

private void splashScreenUseAsyncTask() {

    // Create a AsyncTask object.
    final RetrieveDateTask retrieveDateTask = new RetrieveDateTask();
    retrieveDateTask.execute("", "", "");
    // Get splash image view object.
    final ImageView splashImageView = (ImageView) findViewById(R.id.logo_id);


    //for 5 Hours
    CountDownTimer countDownTimer = new CountDownTimer(time, 1000) {
        @Override
        public void onTick(long l) {

            //long Days = l / (24 * 60 * 60 * 1000);
            long Hours = l / (60 * 60 * 1000) % 24;
            long Minutes = l / (60 * 1000) % 60;
            long Seconds = l / 1000 % 60;

            // tv_days.setText(String.format("%02d", Days));
            text1.setText(String.format("%02d", Hours));
            text2.setText(String.format("%02d", Minutes));
            text3.setText(String.format("%02d", Seconds));

            AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f);
            anim.setDuration(500);
            anim.setRepeatCount(anim.INFINITE);
            anim.setRepeatMode(Animation.REVERSE);
            splashImageView.startAnimation(anim);


        }

        @Override
        public void onFinish() {
            // When count down complete, set the image to invisible.
            //imageAplha = 0;
            //splashImageView.setAlpha(imageAplha);

            // If AsyncTask is not complete, restart the counter to count again.
            if (!retrieveDateTask.isAsyncTaskComplete()) {
                this.start();
            }
        }
    };
    // Start the count down timer.
    countDownTimer.start();

}
// This is the async task class that get data from network.
private class RetrieveDateTask extends AsyncTask<String, String, String> {

    // Indicate whether AsyncTask complete or not.
    private boolean asyncTaskComplete = false;

    public boolean isAsyncTaskComplete() {
        return asyncTaskComplete;
    }

    public void setAsyncTaskComplete(boolean asyncTaskComplete) {
        this.asyncTaskComplete = asyncTaskComplete;
    }

    // This method will be called before AsyncTask run.
    @Override
    protected void onPreExecute() {
        this.asyncTaskComplete = false;
    }

    // This method will be called when AsyncTask run.
    @Override
    protected String doInBackground(String... strings) {
        try {
            // Simulate a network operation which will last for 10 seconds.
            Thread currTread = Thread.currentThread();
            currTread.sleep(time);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            return null;
        }
    }

    // This method will be called after AsyncTask run.
    @Override
    protected void onPostExecute(String s) {
        // Start SplashScreenMainActivity.
        Intent mainIntent = new Intent(splash_screen.this,
                MainActivity.class);
        splash_screen.this.startActivity(mainIntent);
        // Close SplashScreenActivity.
        splash_screen.this.finish();
        this.asyncTaskComplete = true;
    }
}

Service

long sec = Integer.parseInt(value9);
long result = TimeUnit.SECONDS.toMillis(sec);
Log.d("REPLY","Milli"+ result);
String s = String.valueOf(result);

if (mHandler != null) {
     mHandler.obtainMessage(MESSAGE_FROM_SERIAL_PORT, s).sendToTarget();
}
DAIRAV
  • 723
  • 1
  • 9
  • 31
contact dummy
  • 571
  • 9
  • 25
  • call service when Splash Screen open, after update UI from service have look [this](https://stackoverflow.com/questions/14695537/android-update-activity-ui-from-service) – Hemant Parmar Jul 31 '18 at 07:00

2 Answers2

0
new MyTask().execute();
private class MyTask extends AsyncTask<Void,Void,Long>{

    @Override
    protected Long doInBackground(Void... voids) {
        //after downloading or after getting time from service that time for example 3000 we received
        return 3000l;
    }

    @Override
    protected void onPostExecute(Long aLong) {
        super.onPostExecute(aLong);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashScreen.this,MainActivity.class));
            }
        },timeinMs);


    }
}
Gnanendra Kumar
  • 1,096
  • 11
  • 11
0
public class splash_screen extends AppCompatActivity {
    TextView text1, text2, text3,display;
    // int time= 3600000*8;
    public  String data;
    private UsbService usbService;
    private EditText editText;
    private MyHandler mHandler;
    public StringBuilder stringBuilder = new StringBuilder();
    long  time = 60000;
    private long result ;
    private long result2 ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        mHandler = new MyHandler(splash_screen.this);

        int mUIFlag = View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

        getWindow().getDecorView().setSystemUiVisibility(mUIFlag);

        text1 = (TextView) findViewById(R.id.tv_hour);
        text2 = (TextView) findViewById(R.id.tv_minute);
        text3 = (TextView) findViewById(R.id.tv_second);
    }


    private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (intent.getAction()) {
                case UsbService.ACTION_USB_PERMISSION_GRANTED: // USB PERMISSION GRANTED
                    Toast.makeText(context, "USB Ready", Toast.LENGTH_SHORT).show();
                    break;
                case UsbService.ACTION_USB_PERMISSION_NOT_GRANTED: // USB PERMISSION NOT GRANTED
                    Toast.makeText(context, "USB Permission not granted", Toast.LENGTH_SHORT).show();
                    break;
                case UsbService.ACTION_NO_USB: // NO USB CONNECTED
                    Toast.makeText(context, "No USB connected", Toast.LENGTH_SHORT).show();
                    break;
                case UsbService.ACTION_USB_DISCONNECTED: // USB DISCONNECTED
                    Toast.makeText(context, "USB disconnected", Toast.LENGTH_SHORT).show();
                    break;
                case UsbService.ACTION_USB_NOT_SUPPORTED: // USB NOT SUPPORTED
                    Toast.makeText(context, "USB device not supported", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };

    private final ServiceConnection usbConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName arg0, IBinder arg1) {
            usbService = ((UsbService.UsbBinder) arg1).getService();
            usbService.setHandler(mHandler);
            usbService.sendATGetACC();


        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            usbService = null;
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        setFilters();  // Start listening notifications from UsbService
        startService(UsbService.class, usbConnection, null); // Start UsbService(if it was not started before) and Bind it
    }

    @Override
    public void onPause() {
        try {
            unregisterReceiver(mUsbReceiver);
            unbindService(usbConnection);
        } catch (IllegalArgumentException ex) {
        }
        super.onPause();

    }

    @Override
    public void onDestroy() {
        try{
            if(mUsbReceiver!=null)
                unregisterReceiver(mUsbReceiver);
        }catch(Exception e){}
        super.onDestroy();
    }

    private void startService(Class<?> service, ServiceConnection serviceConnection, Bundle extras) {

        Intent serviceIntent = new Intent(this, splash_screen.class);
        this.startService(serviceIntent);
        startService(serviceIntent);

        if (!UsbService.SERVICE_CONNECTED) {
            Intent startService = new Intent(this, splash_screen.class);
            if (extras != null && !extras.isEmpty()) {
                Set<String> keys = extras.keySet();
                for (String key : keys) {
                    String extra = extras.getString(key);
                    startService.putExtra(key, extra);
                }
            }
            startService(startService);
        }
        Intent bindingIntent = new Intent(this, service);
        bindService(bindingIntent, serviceConnection, Context.BIND_AUTO_CREATE);
    }

    private void setFilters() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(UsbService.ACTION_USB_PERMISSION_GRANTED);
        filter.addAction(UsbService.ACTION_NO_USB);
        filter.addAction(UsbService.ACTION_USB_DISCONNECTED);
        filter.addAction(UsbService.ACTION_USB_NOT_SUPPORTED);
        filter.addAction(UsbService.ACTION_USB_PERMISSION_NOT_GRANTED);
        registerReceiver(mUsbReceiver, filter);
    }

    public class MyHandler extends Handler {

        private final WeakReference<splash_screen> mActivity;

        public MyHandler(splash_screen activity) {
            mActivity = new WeakReference<>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case UsbService.MESSAGE_FROM_SERIAL_PORT:
                    String data = (String) msg.obj;
                    mActivity.get().time(data);
                    break;
            }


        }

    }

    public  void time(String data) {
        long sec = Integer.parseInt(data);
        result = TimeUnit.SECONDS.toMillis(sec);
        Log.d("REPLY", "Result value"+result);

        result2 = time - result;
        Log.d("REPLY", "Result2 value"+result2);
        Log.d("REPLY", "Time value"+time);


        if(result>=time) {

            //usbService.sendATGetSTOP();
            Intent mainIntent = new Intent(splash_screen.this,
                    MainActivity.class);
            splash_screen.this.startActivity(mainIntent);
            // Close SplashScreenActivity.
            splash_screen.this.finish();
        }
        else{
            if (result >= time) {

               // usbService.sendATGetSTOP();
                Intent mainIntent = new Intent(splash_screen.this,
                        MainActivity.class);
                splash_screen.this.startActivity(mainIntent);
                // Close SplashScreenActivity.
                splash_screen.this.finish();

            } else {
               // Log.d("REPLY", "result2 value " + result2);
                splashScreenUseAsyncTask();

            } }
        }




    private void splashScreenUseAsyncTask() {
        // Create a AsyncTask object.
        final RetrieveDateTask retrieveDateTask = new RetrieveDateTask();
        retrieveDateTask.execute("", "", "");
        // Get splash image view object.
        final ImageView splashImageView = (ImageView) findViewById(R.id.logo_id);

        //for 5 Hours
        CountDownTimer countDownTimer = new CountDownTimer(result2, 1000) {
            @SuppressLint("DefaultLocale")
            @Override
            public void onTick(long l) {

                long Hours = l / (60 * 60 * 1000) % 24;
                long Minutes = l / (60 * 1000) % 60;
                long Seconds = l / 1000 % 60;

                // tv_days.setText(String.format("%02d", Days));
                text1.setText(String.format("%02d", Hours));
                text2.setText(String.format("%02d", Minutes));
                text3.setText(String.format("%02d", Seconds));

                AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f);
                anim.setDuration(500);
                anim.setRepeatCount(anim.INFINITE);
                anim.setRepeatMode(Animation.REVERSE);
                splashImageView.startAnimation(anim);


            }

            @Override
            public void onFinish() {

                if (!retrieveDateTask.isAsyncTaskComplete()) {
                    this.start();
                }
            }
        };
        // Start the count down timer.
        countDownTimer.start();

    }
    // This is the async task class that get data from network.
    @SuppressLint("StaticFieldLeak")
    private class RetrieveDateTask extends AsyncTask<String, String, String> {

        // Indicate whether AsyncTask complete or not.
        private boolean asyncTaskComplete = false;

        public boolean isAsyncTaskComplete() {
            return asyncTaskComplete;
        }

        public void setAsyncTaskComplete(boolean asyncTaskComplete) {
            this.asyncTaskComplete = asyncTaskComplete;
        }

        // This method will be called before AsyncTask run.
        @Override
        protected void onPreExecute() {
            this.asyncTaskComplete = false;
        }

        // This method will be called when AsyncTask run.
        @Override
        protected String doInBackground(String... strings) {
            try {
                // Simulate a network operation which will last for 10 seconds.
                Thread currTread = Thread.currentThread();
                currTread.sleep(result2);

            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                return null;
            }
        }

        // This method will be called after AsyncTask run.
        @Override
        protected void onPostExecute(String s) {
            //usbService.sendATGetSTOP();

            // Start SplashScreenMainActivity.
            Intent mainIntent = new Intent(splash_screen.this,
                    MainActivity.class);
            splash_screen.this.startActivity(mainIntent);
            // Close SplashScreenActivity.
            splash_screen.this.finish();
            this.asyncTaskComplete = true;
            usbService.sendATGetACC();

        }
    }


}
contact dummy
  • 571
  • 9
  • 25