About using on Android 6.0 or higher.
   It is need to permission for various device controls for use.
   To select [Menu] > [Permission] and, various dialog: [Camera, Location, Microphone]
   to choose 'Allow', and use.

   In addition, App side setting have one self access prohibition function.
   (For Android 4.4 or earlier)
   When it is turned on 'Setting: Device access lock.',
   The Access of the Device 'Camera, GPS, Mic, Load"http:"' is prohibited entirely.
   Please use in OFF state setting.

   *Operations of expanded function may differ depending on the model.

   EX_CAMERA


 [Features] To take the picture with the built-in camera.

 [Format] EX_CAMERA n, ["filename"]

 [Explanation]
  For horizontal screen mode.
   n= 0Stop preview.
   n=1 Start preview.
   n= 2Take a picture. And save to "filename". (.png .jpg)
   n= 3 ex_camera 3, on     Autofocus-ON
         ex_camera 3, off    Autofocus-OFF
  The preview mode can close by stop key or back key.
  (Android6.0 more) Please set in advance.
  Android Setting > Application > Basic > Permission :Camera/ON state

 [e.g.] [smp_camera.bas]
    10 ex_camera 1
    20 while touch(2)= 0: pause10: wend
    30 ex_camera 2,"test.png"
    40 ex_camera 0



  GPS


 [Features] ON/OFF switch for receiving the GPS.

 [Format] GPS ON/OFF

 [Explanation]
  Data reception has to turn on GPS reception beforehand,
   this command'GPS' is also possible to switch on/off.(Before Android2.2)
  In Android2.3 later models, because it can not be automatic switching,
   setting screen of GPS is called.
  After switching manually, please return by back button.
  (It do not advance to the next command until return)
  It's also necessary to turn on network manually
   depending on the model and the location.

 [e.g.]
    gps on
    print ex_gps(0)



  EX_GPS


 [Features] The position information on GPS is acquired.

 [Format] EX_GPS(n)

 [Explanation]
   n=0 Latitude is acquired.
   n=1 Longitude is acquired.
   n=2 Altitude is acquired.
       n=3 Accuracy is acquired.
       n=4 Time is acquired.
       n=5 Speed is acquired.
       n=6 Bearing is acquired.
  It is necessary to turn ON a GPS check or network by setup beforehand.
  The acquisition may take time depending on a place.
  (Android6.0 more) Please set in advance.
  Android Setting > Application > Basic > Permission :GPS/ON state

 [e.g.]
    print ex_gps(0)



  SENSOR


 [Features] ON/OFF switch for receiving the sensor.

 [Format] SENSOR [ on | off ]

 [Explanation]
  It turns ON before acquisition.
  After use is turned OFF.

 [e.g.]



  EX_SENSOR


 [Features]  The information on sensor is acquired.

 [Format] EX_SENSOR(n)

 [Explanation]
  To get the value of each sensor will need its functionality has been built.

  Orientation.
   n=0 Azimuth(Z axis) is acquired.(0-360)
   n=1 Pitch(X axis) is acquired.
   n=2 Roll(Y axis) is acquired.
  Accelerometer.
   n=3 (x axis) is acquired.
   n=4 (y axis) is acquired.
   n=5 (z axis) is acquired.
  Several kinds sensor.
   n=6 Proximity is acquired.(0~1)
   n=7 Temperature is acquired.
   n=8 Illuminance is acquired.
  Gyroscope.
   n=9  (x axis) is acquired.
   n=10 (y axis) is acquired.
   n=11 (z axis) is acquired.
  Magnetic_Field.
   n=12 (x axis) is acquired.
   n=13 (y axis) is acquired.
   n=14 (z axis) is acquired.
  Pressure.
   n=15 Pressure is acquired.

 [e.g.]  [smp_sensor.bas]
    10 sensor on
    20 for i=1 to 1000
    30 locate 0,0
    40 print ex_sensor(0)
    50 print ex_sensor(1)
    60 print ex_sensor(2)
    70 next
    80 sensor off



  EX_EXECUTOR


 [Features] The shortcut of a specific program is made on a home screen, and it is able to run.

 [Format] EX_EXECUTOR "filename", ["displayname"]

 [Explanation]
  If it isn't an existing file, it will become error.
  On Android 8.0 or later, a dialog will appear asking whether to allow shortcut creation.
  *Even if Basic is in the evacuation state, will be initialized by shortcut execution.

 [e.g.]
    ex_executor "test.bas","TEST"



  EX_REC


 [Features] To record the sound from the microphone.

 [Format] EX_REC "filename.3gp" , [ 'seconds' | stop ]

 [Explanation]
  To record the length of the specified number of seconds. (Default: 5 minutes)
  Specification of 'stop' will stop a recording state.
  The file format can be used for recording are ".wav" ".mp3" ".3gp".
  (Android6.0 more) Please set in advance.
  Android Setting > Application > Basic > Permission :MIC/ON state

 [e.g.]
    ex_rec "sound.3gp"
    pause 10000
    ex_rec ,stop



  EX_MOVIE


 [Features] To play back the movie.

 [Format] EX_MOVIE "filename" [, start | pass | ctrl | stop ] [, StartPos(sec.)]

 [Explanation]
  The specified movie is played back.
  Supported formats .3gp .mp4
  The starting position of the movie can be specified by units of second.
  The second parameter.
   start -To begin playback. It doesn't shift to the next command until movie finishes. Notation can be omitted.
   pass -To begin playback. shortly, it will shift to the next command.
   ctrl   -It is the same as 'start', Movie control bar is displayed.
   stop  -To stop playing the movie.
  After movie ended, it closes automatically.

  The Movie mode can close by stop key or back key.

 [e.g.]
    ex_movie "sky.mp4" , , 15



  EX_RECOGN$


 [Features] To return string that have been entered in the speech recognition.

 [Format] EX_RECOGN$(n)

 [Explanation]
     First, by description of 's$=ex_recogn$(0)',
      the dialogue of speech recognition is indicated,
      please speak the word input to the smart phone.
     When the input is finished, input string assignment to string variable.
     When there are no voice input for a few seconds,
      dialog is closed and return null-string("").
     Since the candidates of recognized words is more than one,
      by changing the value of n to 1,2... and,
      be able to get the string for the next candidate.
     When there are no candidates any more, to return null-string.
     The kind of language inputted will be the one chosen
      by (Android setting) 'Language and Input'>'Language'.
     This function can be used between the following points.
     -While this Google recognition services is available state.
     -While the utilization are within regulations.

 [e.g.]
    10 s$=ex_recogn$(0)
    20 print s$
    30 i=1
    40 while ex_recogn$(i)<>""
    50 print ex_recogn$(i):i=i+1
    60 wend



  EX_WEB


 [Features] It jumps to the WEB page of specified address.

 [Format] EX_WEB "web-address"

 [Explanation]
     To press 'Back' button to return to the previous Basic screen.

 [e.g.]
    ex_web "http://androidbasic.ninja-web.net/"



  EX_MAP


 [Features] To display the map of specified position by Google Map.

 [Format] EX_MAP Latitude,Longitude [,Scale] [,"Search-Location"] [,OptionSwitch]

 [Explanation]
     It's necessary to be in net connection state.
     'Longitude'&'Longitude' are same type number as 'ex_gps'.
     'Scale'; [Enlargement] 22 - 0 [Extensive]
     It's possible to designate a place by "Search-Location".
     When designating it, designation 'Longitude'&'Longitude' become invalid.
     'OptionSwitch'
     p  To display by aerial photograph.
     On the map, [Scaling-button],[Current position button] are indicated.
     During map activity, Basic commands doesn't go to next step.
     By back-button, to return to 'Basic' screen.

     'EX_MAP' is the command which can be used temporarily.
     It can be used in the following conditions.
     While 'Google Map' service is provided.
     The period which has not took restriction that
      the calling number of the whole is within the regulation.
     About the number of indication times of map.
     Because there are restriction at the number of calls Google Map API whole each keys,
      so even in App(Basic) on each terminal,
      there are limit at the number of indication times, up to 5 times a day.

 [e.g.]
     ex_map 27.9878,86.925,8
     ex_map ,,,"Sydney",p



  EX_MAP$


 [Features] To acquire coordinate information of Google Map.

 [Format] EX_MAP$(d1[,d2])

 [Explanation]
     Form1: EX_MAP$(d1)
      d1=0  to return Latitude.
      d1=1  to return Longitude.
      d1=2  to return Scale.
     Return value is string, to be necessary to digitize with val() function.

     Form2: EX_MAP$(d1,d2)
      Set d1 as latitude, d2 as longitude,
       and to acquire location information of the coordinate.
      It's necessary to be in net connection state.

 [e.g.]
     10 latitude=27.9878
     20 longitude=86.925,8
     30 print ex_map$(latitude,longitude)
     40 ex_map ,,,"Sydney":print "Sydney"
     50 print "Latitude=";ex_map$(0)
     60 print "Longitude=";ex_map$(1)



  EX_QR$


 [Features] To read and create QR-code, Bar-code.

 [Format] EX_QR$(["data or command"])

 [Explanation]
     It can read string data from QR-code.
     It can read number data from Bar-code.
     When execute 'a$=ex_qr$()' [data unspecify],
     it become scanning screen by camera.
     Please set one's sights on the code and do the scanning.
     When the aiming is fixed and the scan is successful,
     it return to the original screen.
     The read data is substituted for string variable of left side.
     In the case of Barcode-numerical also, data is returned by a string.
     It do not advance to the next command until reading is completed.

     QR-code Bar-code making.
     a$=ex_qr$("string data")
     It's possible to make a code by giving "string".
     The created code is displayed on the upper left of graphic screen.
     It is also possible to save by 'gsave' command.
     In the case of Bar-code, if characters other than numbers are contain in "string",
     it will become an error.

     Various settings.
     By giving the form of command, changes and setting are possible.
     a$=ex_qr$("[SET:BAR]")    Make the target a Bar-code.
     (The format is 'CODE_128', and when converting to 'CODABAR', write 'BAR' as 'CODABAR')
     a$=ex_qr$("[SET:QR]")     Make the target a QR-code.(Default)
     a$=ex_qr$("[SET:number]")    Specify the size of created code in pixel.
     e.g. a$=ex_qr$("[SET:400]")  (Default 256)
     Commands must be written in uppercase letter.

 [e.g.]
     'Read QR-code
     10 a$=ex_qr$()
     20 print a$
     run
     http://www.test.com/
     OK
     'Make  QR-code
     10 cls 3
     20 a$=ex_qr$("[SET:400]")
     30 d$="QRdataTest0123456789abcdefg"
     40 a$=ex_qr$(d$)


  EX_VIBRATE


 [Features] It make terminal vibration.

 [Format] EX_VIBRATE [[Repeat-count],[ON-mili_sec],[OFF-mili_sec],[Pause-mili_sec],[number-of-loops]]

 [Explanation]
  ex_vibrate     -Only once the vibration of 0.8 seconds at unspecified.
  ex_vibrate 0   -To make it stop when it be vibrating.
  By giving the parameters, it can make the operation by pattern.
  By the pattern, it repeat on and off alternately.
  The length can be specified with [ON-mili_sec] and [OFF-mili_sec] in milliseconds.
  To decide 'by how many times loop and go putting a pause',
   it can be specified in [number-of-loops].
  The length of the pause can be specified with [Pause-mili_sec] in milliseconds.
  How many times repeat this one set(on/off repeat-and pause)
   it can be specified in [Repeat-count].
  When the whole length exceeds 1 minute, it will be reduced to 1 minute.
  When each value is omitted, the default value is used.
  This command progresses to the next command even at during vibration.

 [e.g.]
    'Vibrating0.7sec, Rest0.4sec, 3repeat this, and Pause-1sec, and Whole repeat twice.
    '._._._[_]._._._[_]
    ex_vibrate 2,700,400,1000,3



  EX_BRIGHT


 [Features] Backlight control.

 [Format] EX_BRIGHT n

 [Explanation]
  n= 0~100
  It does not become total darkness by 0.

 [e.g.]
    ex_bright 50



  EX_INFO$


 [Features] The variety of information of a terminal is acquired and returned.

 [Format] EX_INFO$(n)

 [Explanation]
  n=0
   The value of battery residual quantity is acquired.(0~100)
   Since this function returns a character string,
   it is necessary to digitize it with the val() function.
  n=1
   To return to the two characters(uppercase) country code of the terminal.
  n=2
   To return Android version in 3-digit number.(Android10 above is 4-digit)
   220 Froyo
   234 Gingerbread
   440 KitKat
   510 Lollipop  etc...
   1000 AndroidQ
  n=3
   To return Network connection state.
   0 No connection
   1 connection OK
   The return value is string.
  n=4
   To return Model number(name).

 [e.g.]
    bt=val(ex_info$(0))
    print ex_info$(1)
    JP 98
    OK
    if val(ex_info$(2))<400 then lowmode=1



  EX_TIME  EX_TIME$


 [Features] To operation and change of number(milliseconds unit) that express time.

 [Format] EX_TIME[$] ("data1","data2"[,data3])

 [Explanation]
     There are 3 forms type.

     Type1: ex_time("yyyy/MM/dd","HH:mm:ss")
     The numerical value(millsec 13-digit) is returned
      that is changed from Date and Time.
     e.g.
      10 t=ex_time("2016/10/25","12:15:00")
      20 ptint t
        1477365300593

     Type2: ex_time(milliseconds,"acquired-item")
     To return each specified item from milliseconds.
     It specify one of the following about item.
      "date"(form"yyyy/MM/dd")  "time"(form"HH:mm:ss")
      "year" "month" "day" "hour" "min" "sec"
     "date" & "time" is, because the return value is a string, described by 'ex_time$()' attaching $.
     e.g.
      10 t=1477365300593
      20 ptint ex_time$(t,"date")
      30 ptint ex_time(t,"year")
      40 ptint ex_time(t,"hour")
       2016/10/25
        2016
        12

     Type3: ex_time(milliseconds,"changed-item", change-numerical)
     To change designated-item in milliseconds to change-numerical,
      and return by milliseconds.
     Designated item
      "year" "month" "day" "hour" "min" "sec"
     e.g.
      10 t=1477365300593: :'initial date & time
      20 ptint ex_time$(t,"date"),ex_time$(t,"time")
      30 t2=ex_time(t,"yrar",2018) :'Change year to 2018
      40 ptint ex_time$(t2,"date")
      50 t3=ex_time(t,"min",45) :'Change minute to 45
      60 ptint ex_time$(t3,"time")
       2016/10/25    12:15:00
       2018/10/25
       12:45:00