How to run a native (API) function
Monkey Targets Forums/Android/How to run a native (API) function
| ||
| Do someone know how can i run a native function from android API? this one: http://developer.android.com/reference/android/util/DisplayMetrics.html#density |
| ||
| oh!! this is very interesting for me too! Last wek I asked here, if somebody had heared anything about different dpi's for x and y axis on smartphones. an noww.. your linked page has a link to... ... public float xdpi Since: API Level 1 The exact physical pixels per inch of the screen in the X dimension. public float ydpi Since: API Level 1 The exact physical pixels per inch of the screen in the Y dimension. ... which belong to the "android.util.DisplayMetrics" And should be called in Java like this: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); Thank your for this! Maybe I can help you with another sample, which shows cooperation between Android and Monkey. I am not very firm with Java and somebody learned me how to call simple Parameters. This example asks for the Language on the smartphone: Only Monkey is necessary: Import mojo
Extern
#If TARGET="android"
Function GetAndroidLanguageID:String() = "Locale.getDefault().getLanguage"
#Endif
Public
Class MyApp Extends App
.....
Method OnRender()
Cls
DrawText "Language: " + SystemInfo.GetLanguageID(), 10, 60
End
End
And I learned last week to combine Java and Monkey, if you have to do more, than fetching one parameter. This example asks for the SystemTimer: This is monkey: Import mojo
Import "C:\basic\monkey\MyApp\SystemInfo.java"
Extern
#If TARGET="android"
Function GetAndroidMillisecs:Int()="SystemPeter.AndroidMilli"
#Endif
Public
Class MyApp Extends App
.....
Method OnRender()
Cls
DrawText "Zeit: " + SystemInfo.RealMillisecs(), 10, 60
End
End
Function Main()
New Language
End
Class SystemInfo
Function RealMillisecs:INT()
#If TARGET="android"
Return GetAndroidMillisecs()
#Else
Return 0
#Endif
End
End
And this is my "SystemInfo.java": class SystemPeter {
static int AndroidMilli() {
long longms =System.currentTimeMillis();
longms = longms % 1000000000;
int ms =(int)longms;
return ms;
}
} |
| ||
| Thank you |
| ||
| Thanks for sharing this. Very useful! |
| ||
| What's with the % 1000000000? |
| ||
| My sample should only demonstrate the cooperation of Java and Monkey. Not important, what's inside the function... ...as I am not very firm in this I did not know how to return the LONG result of System.currentTimeMillis() to Monkey. So I made a MODULO 1,000,000,000 to reduce the result to a INT size. Without this I got error messages, while running the code or the result was negative! I know in your DIDDY module you are able to return the complete value, but I do not understand how! |