thanx Shai for the link
i solved the puzzle
here is the code which works
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
import android.Manifest;
import android.view.View;
import android.view.WindowManager;
import android.app.Activity;
import android.view.Window;
import com.codename1.impl.android.AndroidNativeUtil.*;
import android.os.Build;
import java.io.IOException;
public class BrightImpl {
public float brightset(int brightness ) {
Context context =
com.codename1.impl.android.AndroidNativeUtil.getContext();
// Check whether has the write settings permission or not.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(!com.codename1.impl.android.AndroidNativeUtil.checkForPermission(Manifest.permission.WRITE_SETTINGS,
"Write settings denied")){
return -100;
} else {
changeScreenBrightness(context, brightness );
return 20;
}
} else {
if(!com.codename1.impl.android.AndroidNativeUtil.checkForPermission(Manifest.permission.WRITE_SETTINGS,
"Write settings denied")){
return -100;
} else {
changeScreenBrightness(context, brightness );
return 20;
}
}}
// This function only take effect in real physical android device,
// it can not take effect in android emulator.
private void changeScreenBrightness(Context context, int
screenBrightnessValue)
{
// Change the screen brightness change mode to manual.
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
// Apply the screen brightness value to the system, this will
change the value in Settings ---> Display ---> Brightness level.
// It will also change the screen brightness for the device.
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, screenBrightnessValue);
//refreshes the screen
/* int br = Settings.System.getInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = (float) screenBrightnessValue / 255;
getWindow().setAttributes(lp);
*/
Activity myactivity =
com.codename1.impl.android.AndroidNativeUtil.getActivity();
Window window = myactivity.getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.screenBrightness = screenBrightnessValue / 255f;
window.setAttributes(layoutParams);
myactivity.getWindow().addFlags(WindowManager.LayoutParams.FLAGS_CHANGED);
}
public boolean isSupported() {
return true;
}
}
Op donderdag 7 november 2019 03:55:55 UTC+1 schreef Shai Almog:
>
> No. Native interfaces don't extend activity and it shouldn't work. It's a
> different lifecycle.
> Native interfaces are objects we create. An activity is something the OS
> needs to create. These are very different things. We create the native
> CodenameOneActivity and provide you various tools to work with it e.g.
> AndroidNativeUtils etc. see
> https://www.codenameone.com/manual/advanced-topics.html
>
--
You received this message because you are subscribed to the Google Groups
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/codenameone-discussions/ca747020-839a-4794-8dd8-36c99a8a0c23%40googlegroups.com.