How to Update the Terminal's Time Setting: Difference between revisions

From wizarPOS
Line 11: Line 11:


=== Demo source===
=== Demo source===
follows is the snippet code:
Here are some code snippets:
<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
public static void setDateTime(int year, int month, int day, int hour, int minute) throws IOException, InterruptedException {
public static void setDateTime(int year, int month, int day, int hour, int minute) throws IOException, InterruptedException {

Revision as of 09:15, 24 March 2020

By auto update

Open WiFi, connect it to network, the date and time will be auto updated.

By manual

From Settings>Date&time, close "Automatic time zone" ,"Automatic date&time", and then set date, time.

By API

Use the android system clock method to change the system time.

Permissions

 android.permission.CLOUDPOS_SETTIME

The app declares the permission in the manifest.

Demo source

Here are some code snippets:

public static void setDateTime(int year, int month, int day, int hour, int minute) throws IOException, InterruptedException {
 
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month-1);
        c.set(Calendar.DAY_OF_MONTH, day);
        c.set(Calendar.HOUR_OF_DAY, hour);
        c.set(Calendar.MINUTE, minute);
         
        long when = c.getTimeInMillis();
        if (when / 1000 < Integer.MAX_VALUE) {
            SystemClock.setCurrentTimeMillis(when);
        }
        long now = Calendar.getInstance().getTimeInMillis();
        //Log.d(TAG, "set tm="+when + ", now tm="+now);
 
        if(now - when > 1000)
            throw new IOException("failed to set Date."); 
         
    }

Please download the whole project demo