User Tools

Site Tools


Sidebar

Privacy Policy

News

Version 2.50 is out since Jan 1st 2022


Frequently Asked Questions


Namespaces

Note for contributors

If you wish to create a new page in the DroidScript wiki, please click on the most appropriate namespace above and follow the notes for contributors there.

Because of spam, it has been necessary to add a CAPTCHA to the registration form and the save option for editing pages. You will not need to prove you are human if you are logged in, so please register.

Please feel free to improve any existing page, as well as adding new pages to increase the sum of public knowledge about DroidScript.

Formatting Syntax

sample_code:pincode

Pincode entry

This sample code was posted on the main group by Nelson Tengkiat (Netpower8)

It requires a sound file which is included with the code in the spk attached to https://groups.google.com/d/msg/androidscript/h1QmmbRA6mc/DRvc1bZTAgAJ

pincode.js
// **************************************************
// *    Author: Nelson Tengkiat
// * Code Date: Sun, Dec 13, 2015
// **************************************************
// Sample OnStart() code
 
// global var to save. confirm. compare.
var mypin="";
var verify_mypin="";
 
//Called when application is started.
function OnStart() {
    //Create a layout with objects vertically centered.
    lay = app.CreateLayout( "linear", "VCenter,FillXY" );    
    //Create a text label and add it to layout.
    txt = app.CreateText( "PIN CODE test" );
    txt.SetTextSize( 32 );
    lay.AddChild( txt );
    
    //Add layout to app.    
    app.AddLayout( lay );
 
    // call our function. confirm. compare both.
    alert ("Enter Your 6 digit PIN Code");
    EnableGetPincode();
    PinCode(6,"Enter PIN Code");
 
    // want to see this "notitle" option ?
    // comment out the above PinCode function call
//    PinCode(6,"6 digit PIN Code","notitle");
}
 
// called if user completed entry on pin code.
function pincodeComplete () {
    if (mypin==""){
        mypin=GetPincodeSecret();
//        alert("PIN Code entered was: "+mypin);
        PinCode(6,"Confirm your 6 digit PIN Code");
    }
    if (mypin>"") { 
        verify_mypin=GetPincodeSecret();
        if ((mypin>"") && (verify_mypin>"")){
//            alert("Confirm PIN Code entered was: "+verify_mypin);
            if (mypin==verify_mypin)
                alert("PIN Code match\n"+"Code entered was: "+mypin);
            else
                alert("No match. Different PIN Codes \n"+"1st Pincode: "+mypin+"\n2nd Pincode: "+verify_mypin);
            app.Exit();
        }
    }
}
 
// **************************************************
// * Delete above or comment out to be able to be used
// * as app.LoadScript("PincodeFuncs.js");
// **************************************************
 
/*
Dated : Dec 13, 2015
 
Collection of 
Make seperate test program code to test functions here
to avoid accidental deletion of this code.
 
// **************************************************
// *    Author: Nelson Tengkiat
// * Code Date: Sun, Dec 13, 2015
// **************************************************
 
// Load my user defined functions
app.LoadScript("PincodeFuncs.js");     // getting pin code
or
app.LoadScript("/sdcard/DroidScript/FuncsLibrary/PincodeFuncs.js");   // getting pin code
 
 
List of functions in this collection 
 
// pincode length size. dialog msg (ei. getting, resetting, confirming)
function PinCode(size,diamsg,option)
 
// button press. do something
function btn_pincode ()
 
// output the secret code as string
function GetPincodeSecret ()
 
// enable sound or silent pincode entry
function pincodeSound (snd)
 
// enable user to handle something after competion of pincode
function EnableGetPincode ()
 
// user must create this function to handle pincode secret after completion
function pincodeComplete ()
 
 
*/
 
// **************************************************
// * Global vars
// **************************************************
 
// pincode position, length, display, userget function, secret code, pin code in one object
var obj_pincode = {"pos":1, "len":0, "disp":false, "sound": true, "userget":false, "secret":"", "pin":[]};
var button = app.CreateMediaPlayer();
    button.SetFile("Snd/button_click.mp3");
 
 
// **************************************************
// * List of functions
// **************************************************
 
// pincode length size. dialog msg (ei. getting, resetting, confirming)
function PinCode(size,diamsg,option) {
    var ar_pinBtn = [];
    
    // minimum pincode length should be 4
    // maximum pincode length can be 15
    // larger than that it goes off the screen on a 5" phone
    if ((size<4) || (size>15)) {
        alert("Minimum PIN Code length should be 4, Maximum can be up to 15");
        return;
    }
    
    // reset entries when this is called. dont reset the sound
    obj_pincode.pos=0;        // reset to start pos
    obj_pincode.len=size;   // size of secret code
    obj_pincode.disp=false;   // dont display the secret
    obj_pincode.secret="";  // reset the secret code
    obj_pincode.pin=[];     // reset the pin code
 
    //Create dialog window.
    if (option=="notitle") 
        dlgTxt = app.CreateDialog( diamsg,"nocancel,notitle" );
    else
        dlgTxt = app.CreateDialog( diamsg,"nocancel" );
    
    //Create a layout for dialog.
    layV_pc = app.CreateLayout( "linear", "vertical,fillxy,left" );
    dlgTxt.AddLayout( layV_pc );
 
    // show the pincode entry
    if (option=="notitle") {
        txt0 = app.CreateText( " PIN CODE ",0.6,-1,"fillx,center");
        txt0.SetTextSize(20);
        txt0.SetTextColor("#FFFFFFFF");
        txt0.SetBackColor("#FF3B85FF");
        txt0.SetPadding(0.05,0,0.05,0);
        layV_pc.AddChild(txt0);
    }
 
    // show the pincode entry
    ss="";
    for (i=0; i<obj_pincode.len; i++) {
        ss+="-";
        obj_pincode.pin.push("-");
    }
 
    layH0 = app.CreateLayout( "linear", "horizontal,fillx,center" );
    pincode = app.CreateText(ss,"fillx,center");
    pincode.SetTextSize(40);
    layH0.AddChild( pincode );
    layV_pc.AddChild(layH0);
    
    // create the buttons
    for (i=0; i<=9; i++) {
        ar_pinBtn[i]=app.CreateButton( i, 0.1, 0.1);
        ar_pinBtn[i].num=i;
        ar_pinBtn[i].SetOnTouch(btn_pincode);
    }
    
    // create the display or hide code button
    ar_pinBtn[10]=app.CreateButton( "?", 0.1, 0.1);
    ar_pinBtn[10].num=10;
    ar_pinBtn[10].SetOnTouch(btn_pincode);
    
    // create the back key
    ar_pinBtn[11]=app.CreateButton( "<", 0.1, 0.1);
    ar_pinBtn[11].num=11;
    ar_pinBtn[11].SetOnTouch(btn_pincode);
 
    layH1 = app.CreateLayout( "linear", "horizontal,fillx,center" );
    layH2 = app.CreateLayout( "linear", "horizontal,fillx,center" );
    layH3 = app.CreateLayout( "linear", "horizontal,fillx,center" );
    layH4 = app.CreateLayout( "linear", "horizontal,fillx,center" );
 
    // make the buttons. reccursive 3 rows
    for (i=1; i<=3; i++) {
        for (ii=1; ii<=3; ii++) {
            switch (i) {
                case 1:
                    layH1.AddChild(ar_pinBtn[ii]);
                    break;
                case 2:
                    layH2.AddChild(ar_pinBtn[3+ii]);
                    break;
                case 3:
                    layH3.AddChild(ar_pinBtn[6+ii]); 
                    break;
            }
                    
        }
    }
 
    // make the last row of buttons
    layV_pc.AddChild(layH1);
    layV_pc.AddChild(layH2);
    layV_pc.AddChild(layH3);
    layH4.AddChild( ar_pinBtn[10] );
    layH4.AddChild( ar_pinBtn[0] );
    layH4.AddChild( ar_pinBtn[11] );
    layV_pc.AddChild(layH4);
 
    // Show dialog
    dlgTxt.Show();
} // function PinCode(size,diamsg,option)
 
// button press. do something
function btn_pincode () {
    
    // generate sound when we press a button
    if (obj_pincode.sound) {
        button.Stop(); button.Play();
    }
    
    // button press action here
    switch (this.num) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
        case 9:
        case 0:
            obj_pincode.pin[obj_pincode.pos]=this.num;
            if (obj_pincode.pos<obj_pincode.len)
                obj_pincode.pos++;
            break;
        case 10:
            if (obj_pincode.disp)
                obj_pincode.disp=false;
            else
                obj_pincode.disp=true;
            break;
        case 11:
            if (obj_pincode.pos>0)
                obj_pincode.pos--;
            obj_pincode.pin[obj_pincode.pos]="-";
            break;
    }
 
    // display the pin code or display secret
    var ss="";
    if (obj_pincode.disp) {
        for (i=0; i<obj_pincode.len; i++) {
            ss+=obj_pincode.pin[i];
        }
    } else {
        for (i=0; i<obj_pincode.len; i++) {
            if (obj_pincode.pin[i]=="-")
                ss+=obj_pincode.pin[i];
            else
                ss+="●";
        }
    }
    pincode.SetText(ss);
 
    // pincode complete. save the secret
    if (obj_pincode.pos==obj_pincode.len) {
        var ss="";
        for (i=0; i<obj_pincode.len; i++) {
            ss+=obj_pincode.pin[i];
        }
        obj_pincode.secret=ss;
        dlgTxt.Hide();
        dlgTxt.Destroy();
        app.RemoveLayout(dlgTxt);
        app.RemoveLayout(layV_pc);
        
        // call the user function after pin code completion
        // if the user want something done
        if ((obj_pincode.userget) && (obj_pincode.pos==obj_pincode.len))
            pincodeComplete();
    }
} // function btn_pincode ()
 
// output the secret code as string
function GetPincodeSecret () {
    return obj_pincode.secret;
}
 
// enable sound or silent pincode entry
function pincodeSound (snd) {
    obj_pincode.sound = snd;
}
 
// enable user to handle something after competion of pincode
function EnableGetPincode () {
    obj_pincode.userget = true;
}
sample_code/pincode.txt · Last modified: 2015/12/14 01:11 (external edit)