0

在我的程序中,我测试了这个:

try {               
    FileWriter mWriter = new FileWriter("/sys/class/leds/flashlight/brightness");
    mWriter.write(125);
    mWriter.flush();
} catch (Exception e) {
    Log.e(TAG, "setFlashlightEnabled failed", e);
}

我在日志中有这个:

01-13 14:56:30.578: E/test(603): setFlashlightEnabled failed
01-13 14:56:30.578: E/test(603): java.io.FileNotFoundException: /sys/class/leds/flashlight/brightness (Permission denied)
01-13 14:56:30.578: E/test(603):    at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
01-13 14:56:30.578: E/test(603):    at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
01-13 14:56:30.578: E/test(603):    at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
01-13 14:56:30.578: E/test(603):    at java.io.FileOutputStream.<init>(FileOutputStream.java:66)
01-13 14:56:30.578: E/test(603):    at java.io.FileWriter.<init>(FileWriter.java:80)
01-13 14:56:30.578: E/test(603):    at sad.sdsa.sdjahskdhj.TestpuissanceActivity.onClick(TestpuissanceActivity.java:87)
01-13 14:56:30.578: E/test(603):    at android.view.View.performClick(View.java)
01-13 14:56:30.578: E/test(603):    at android.view.View$PerformClick.run(View.java)
01-13 14:56:30.578: E/test(603):    at android.os.Handler.handleCallback(Handler.java)
01-13 14:56:30.578: E/test(603):    at android.os.Handler.dispatchMessage(Handler.java)
01-13 14:56:30.578: E/test(603):    at android.os.Looper.loop(Looper.java)
01-13 14:56:30.578: E/test(603):    at android.app.ActivityThread.main(ActivityThread.java)
01-13 14:56:30.578: E/test(603):    at java.lang.reflect.Method.invokeNative(Native Method)
01-13 14:56:30.578: E/test(603):    at java.lang.reflect.Method.invoke(Method.java:507)
01-13 14:56:30.578: E/test(603):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
01-13 14:56:30.578: E/test(603):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
01-13 14:56:30.578: E/test(603):    at dalvik.system.NativeStart.main(Native Method)

我在 ADB Shell 中对此进行了测试:

echo 125 > /sys/class/leds/flashlight/brightness

它可以在 root 下工作,但不能在正常模式下工作。

有什么办法可以在不root的情况下改变flash输出?

4

1 回答 1

1

它属于系统,受系统保护,所以你必须是root才能访问。而且所有Android设备在结构上都没有相同的手电筒设计,例如:在HTC设备中,它支持处理3种不同亮度级别的API,但其他人不...

于 2012-01-13T15:58:09.073 回答