Dear all,

Good Morning,

I am writing an application to get the following details from the
Internet.

Time

Date

Day

>From an NTP server.

Which i am getting perfect.

In the AndroidManifest.xml file  i have set the following properties

<uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.SET_TIME"/>
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" />
     <uses-permission
android:name="android.permission.CHANGE_CONFIGURATION" />
     <uses-permission
android:name="com.android.launcher.permission.READ_SETTINGS" />
     <uses-permission
android:name="com.android.launcher.permission.WRITE_SETTINGS" />

The problem what i am facing is, i am  not able to set the time to
the   "SystemClock"  using the following statement in my code

" SystemClock.setCurrentTimeMillis(offsetValue);"

when i do this,  i see in the system logs the following error

"Unable to open alarm driver: Permission denied"

on both the emulator and on the Target.


I have also pasted  the entire code of my application below:

Any help would be appreciated.

Regards

Aslam

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

NTPUDPClient client = new NTPUDPClient();
        Process p;
        //Runtime r = Runtime.getRuntime();

/*
        try {
            p = Runtime.getRuntime().exec("su");
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }*/
        // client = new NTPUDPClient(); //
        System.out.println("after  calling NTPUDPClient client = new
NTPUDPClient()");
        // We want to timeout if a response takes longer than 10
seconds
        client.setDefaultTimeout(10000); //
        try {
            System.out.println("before client.open()");
            
/////////////////////////////////////////////////////////////////////////////////////
            client.open();// THIS IS THE PLACE WHERE IT IS THROWING
THE EXCEPTION, I HAVE THE SAME CODE SAMPLE WRITTEN IN JAVA WHERE IT
            // WORKING FINE.
            
/////////////////////////////////////////////////////////////////////////////////////
            System.out.println("after client.open()");
           // for (int i = 0; i < args.length; i++)//
           // {//
                System.out.println("entering into the 'try' blok");
                try {
                    //InetAddress hostAddr =
InetAddress.getByName(args[i]); // 182.79.254.202
                     InetAddress hostAddr =
InetAddress.getByName("182.79.254.202");
                     System.out.println("getting the HostAddress and
Host Nae");
                     System.out.println("> " + hostAddr.getHostName()
+ "/" + hostAddr.getHostAddress());//
                    TimeInfo info = client.getTime(hostAddr);
                    
/////////////////////////////////////////////////////////////////////////////////////////////////////////
                    NtpV3Packet message = info.getMessage();
                    int stratum = message.getStratum();
                    String refType;

                    if (stratum <= 0) {
                        refType = "(Unspecified or Unavailable)";
                    } else if (stratum == 1) {
                        refType = "(Primary Reference; e.g., GPS)"; //
GPS, radio clock, etc.
                    } else {
                        refType = "(Secondary Reference; e.g. via NTP
or SNTP)";
                    }
                    // System.out.println(" Stratum: " + stratum + " "
+ refType); //
                    int version = message.getVersion();
                    int li = message.getLeapIndicator();
                    System.out.println(" leap=" + li + ", version=" +
version + ", precision=" + message.getPrecision());//

                  System.out.println(" mode: " + message.getModeName()
+ " (" + message.getMode() + ")");//
                    int poll = message.getPoll();
                    // poll value typically btwn MINPOLL (4) and
MAXPOLL (14)
                    System.out.println(" poll: " + (poll <= 0 ? 1 :
(int) Math.pow(2, poll))+ " seconds" + " (2 ** " + poll + ")");//
                    double disp =
message.getRootDispersionInMillisDouble();
                    System.out.println(" rootdelay=" +
numberFormat.format(message.getRootDelayInMillisDouble())+ ",
rootdispersion(ms): " + numberFormat.format(disp));//
                    int refId = message.getReferenceId();
                    String refAddr = NtpUtils.getHostAddress(refId);
                    String refName = null;
                    String timeStamp = null;
                    if (refId != 0) {
                        if (refAddr.equals("127.127.1.0")) {
                            refName = "LOCAL"; // This is the ref
address for the Local Clock
                        } else if (stratum >= 2) {
                            // If reference id has 127.127 prefix then
it uses its own reference clock
                            // defined in the form 127.127.clock-
type.unit-num (e.g. 127.127.8.0 mode 5
                            // for GENERIC DCF77 AM; see refclock.htm
from the NTP software distribution.
                            if (!refAddr.startsWith("127.127")) {
                                try {
                                    InetAddress addr =
InetAddress.getByName(refAddr);
                                    String name = addr.getHostName();
                                    if (name != null && !
name.equals(refAddr)) {
                                        refName = name;
                                    }
                                } catch (UnknownHostException e) {
                                    // some stratum-2 servers sync to
ref clock device but fudge stratum level higher... (e.g. 2)
                                    // ref not valid host maybe it's a
reference clock name?
                                    // otherwise just show the ref IP
address.
                                    refName =
NtpUtils.getReferenceClock(message);
                                }
                            }
                        } else if (version >= 3 && (stratum == 0 ||
stratum == 1)) {
                            refName =
NtpUtils.getReferenceClock(message);
                            // refname usually have at least 3
characters (e.g. GPS, WWV, LCL, etc.)
                        }
                    }
                    if (refName != null && refName.length() > 1) {
                        refAddr += " (" + refName + ")";
                    }
                    System.out.println(" Reference Identifier:\t" +
refAddr);//

                    TimeStamp refNtpTime =
message.getReferenceTimeStamp();//
                   System.out.println(" Reference Timestamp:\t" +
refNtpTime + "  " + refNtpTime.toDateString());//

                    // Originate Time is time request sent by client
(t1)
                    TimeStamp origNtpTime =
message.getOriginateTimeStamp();//
                    System.out.println(" Originate Timestamp:\t" +
origNtpTime + "  " + origNtpTime.toDateString());//

                    long destTime = info.getReturnTime();//
                    // Receive Time is time request received by server
(t2)
                    TimeStamp rcvNtpTime =
message.getReceiveTimeStamp();//
                   System.out.println(" Receive Timestamp:\t" +
rcvNtpTime + "  " + rcvNtpTime.toDateString());//

                    // Transmit time is time reply sent by server (t3)
                    TimeStamp xmitNtpTime =
message.getTransmitTimeStamp();//
                    System.out.println(" Transmit Timestamp:\t" +
xmitNtpTime + "  " + xmitNtpTime.toDateString());//

                    // Destination time is time reply received by
client (t4)
                    TimeStamp destNtpTime =
TimeStamp.getNtpTime(destTime);//
                   System.out.println(" Destination Timestamp:\t" +
destNtpTime + "  " + destNtpTime.toDateString());//


                   // timeStamp = destNtpTime.toDateString();
                    timeStamp = xmitNtpTime.toDateString(); //
                    TextView tv = new TextView(this);

                    info.computeDetails(); // compute offset/delay if
not already done
                    Long offsetValue = info.getOffset();
                    Long delayValue = info.getDelay();
                    String delay = (delayValue == null) ? "N/A" :
delayValue.toString();
                    String offset = (offsetValue == null) ? "N/A" :
offsetValue.toString();

                    System.out.println(" Roundtrip delay(ms)=" + delay
+ ", clock offset(ms)=" + offset); // offset in ms
                    tv.setText(timeStamp);
                    setContentView(tv);
                    try {
                        p = Runtime.getRuntime().exec("su");


                    SystemClock.setCurrentTimeMillis(offsetValue); //
                    final Calendar cal = Calendar.getInstance();//
                    cal.setTimeInMillis(offsetValue);//
                try {
                        p.waitFor();
                            if(p.exitValue()!= 255){
                                System.out.println("root permission
\n");
                                }
                            else{
                                System.out.println("No root permission
\n");
                                }
                        //}
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    
////////////////////////////////////////////////////////////////////////////////////////////////////////////

                   // processResponse(info);
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
          //  }//
        } catch (SocketException e) {//SocketException(String msg)
       // catch (SocketException(String msg)){
            e.printStackTrace();
        //System.out.println(msg);
        }
        //setContentView(tv);
        client.close();
    }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to