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:get_device_specs

This is an old revision of the document!


Table of Contents

Get Device Specs

I have been asked more than once lately about the device on which I am testing code.

In order to produce some of the answers simply, I wrote a simple function getDeviceSpecs(). It occurred to me that this may be useful to others when reporting problems on the discussion groups.

Sample code

The sample app uses this function to display some specs and copy them to the clipboard, ready to pass elsewhere.

getDeviceSpecs.js
var allBuilds = JSON.parse('{' +
  '"1":{"level":1,"codename":"(no code name)","version":"1.0"}, ' +
  '"2":{"level":2,"codename":"(no code name)","version":"1.1"} , ' +
  '"3":{"level":3,"codename":"Cupcake","version":"1.5"}, ' +
  '"4":{"level":4,"codename":"Donut","version":"1.6"}, ' +
  '"5":{"level":5,"codename":"Eclair","version":"2.0"},  ' +
  '"6":{"level":6,"codename":"Eclair","version":"2.0.1"}, ' +
  '"7":{"level":7,"codename":"Eclair","version":"2.1"}, ' +
  ' "8":{"level":8,"codename":"Froyo","version":"2.2.x"}, ' +
  ' "9":{"level":9,"codename":"Gingerbread","version":"2.3 - 2.3.2"}, ' +
  ' "10":{"level":10,"codename":"Gingerbread","version":"2.3.3 - 2.3.7"}, ' +
  ' "11":{"level":11,"codename":"Honeycomb","version":"3.0"}, ' +
  ' "12":{"level":12,"codename":"Honeycomb","version":"3.1"}, ' +
  ' "13":{"level":13,"codename":"Honeycomb","version":"3.2.x"}, ' +
  ' "14":{"level":14,"codename":"Ice Cream Sandwich","version":"4.0.1 - 4.0.2"}, ' +
  ' "15":{"level":15,"codename":"Ice Cream Sandwich","version":"4.0.3 - 4.0.4"}, ' +
  ' "16":{"level":16,"codename":"Jelly Bean","version":"4.1.x"}, ' +
  ' "17":{"level":17,"codename":"Jelly Bean","version":"4.2.x"}, ' +
  ' "18":{"level":18,"codename":"Jelly Bean","version":"4.3.x"}, ' +
  ' "19":{"level":19,"codename":"KitKat","version":"4.4 - 4.4.4"}, ' +
  ' "20":{"level":20,"codename":"K or L","version":"4 or 5"}, ' +
  ' "21":{"level":21,"codename":"Lollipop","version":"5.0"}, ' +
  ' "22":{"level":22,"codename":"Lollipop","version":"5.1"}, ' +
  ' "23":{"level":23,"codename":"MarshMallow","version":"6.0"}, ' +
  ' "24":{"level":24,"codename":"Nougat","version":"7.0"}, ' +
  ' "25":{"level":25,"codename":"Nougat","version":"7.1"}, ' +
  ' "26":{"level":26,"codename":"Oreo","version":"8.0.0"} ' +
  ' }');
 
var osObj = allBuilds[app.GetOSVersion()]
try
{
  var osInfo = "Android " + osObj.version + " (" +
    osObj.codename + ")  API level " +
    osObj.level
}
catch(err)
{
  var osInfo = app.GetOSVersion();
}
var txt;
//Called when application is started.
function OnStart()
{
  //Lock orientation
  app.SetOrientation( app.GetOrientation() );
  //Create a layout with objects vertically centered.
  var lay = app.CreateLayout("linear", "VCenter,FillXY");
  lay.SetBackColor("#ffddffff");
 
  // create viewr for specs
  scroll = app.CreateScroller(1, 0.9);
  var specs = getDeviceSpecs();
  txt = app.CreateText(specs, 1, 0.9, "left,multiLine");
  txt.SetPadding(0.1);
  txt.SetTextColor("#ff446666");
  scroll.AddChild(txt);
  lay.AddChild(scroll);
 
  //Create a button and add it to layout.
  var btn = app.CreateButton("[fa-copy]", -1, -1, "fontAwesome,custom");
  btn.SetTextColor("#ffddffff");
  btn.SetStyle("#4285F4", "#2265d4", 2, "#999999", 0, 1, "#ff9000");
 
  btn.SetOnTouch(btn_OnTouch);
  lay.AddChild(btn);
 
  //Add layout to app.    
  app.AddLayout(lay);
}
 
function btn_OnTouch()
{
  app.SetClipboardText(txt.GetText( ) );
  // flash
  txt.SetBackColor( "#44000000" );
  setTimeout( function(){
    txt.SetBackColor( "#00000000" );}
    ,100);
}
 
function getDeviceSpecs()
{
  var os = app.GetOSVersion();
  var model = app.GetModel();
  var tablet = app.IsTablet();
  var fromapk = (app.GetAppPath() == "/Assets")
  var dsversion = app.GetDSVersion()
  //Get screen dimensions. 
  var sw = app.GetScreenWidth();
  var sh = app.GetScreenHeight();
  var dens = app.GetScreenDensity();
  //Get display dimensions. 
  var dw = app.GetDisplayWidth();
  var dh = app.GetDisplayHeight();
  //Get drive details
  var intfld = app.GetInternalFolder();
  var extfld = app.GetExternalFolder();
  var intspace = app.GetFreeSpace("internal");
  var extspace = app.GetFreeSpace("external");
  var mem = app.GetMemoryInfo().total.toLocaleString("en-US");
 
  //specs are formatted as a comment so we can paste
  //them somewhere convenient
  try
  {
    os = osInfo;
  }
  catch(err)
  {}
  var s = "/*\n" +
    "os=" + os + "\n" +
    "tablet=" + tablet + "\n" +
    "model=" + model + "\n" +
    "DroidScript=" + dsversion + "\n" +
    "screen width=" + sw + "\n" +
    "screen height=" + sh + "\n" +
    "screen density=" + dens + "\n" +
    "display width=" + dw + "\n" +
    "display height=" + dh + "\n" +
    "internal folder=" + intfld + "\n" +
    "external folder=" + extfld + "\n" +
    "int free space=" + intspace + "\n" +
    "ext free space=" + extspace + "\n" +
    "memory=" + mem +"\n" +
    "country code=" + app.GetCountryCode() + "\n" +
    "country=" + app.GetCountry() + "\n" +
    "language code=" + app.GetLanguageCode() + "\n" +
    "language=" + app.GetLanguage() + "\n" +
    "wifi=" + app.GetIPAddress() + "\n" +
    "*/";
  return(s);
}

Notes

The function getDeviceSpecs at the end of the code, can be pasted independently into a project an the string returned can be used however you see fit.

sample_code/get_device_specs.1511667994.txt.gz · Last modified: 2017/11/26 03:46 by 127.0.0.1