在 Python/Kivy 中更改设备壁纸
Change Device Wallpaper in Python/Kivy
我有一个简单的应用程序,除其他外,我需要这个应用程序能够更改 Android 上设备的壁纸。
现在,我在网上四处寻找,pyjnius seems like the obvious choice. The problem now is I don't know the first thing about java but a quick google search produces the WallpaperManager 作为我可以使用的东西。
问题是:如何使用 pyjnius 在我的 kivy 应用程序上实现壁纸管理器功能。
再一次,不是 java 开发者所以不要开枪
我也不知道 Java,但在检查了一些 java 示例后,我生成了一个解决方案。不要忘记为您的 buildozer.spec 文件添加 SET_WALLPAPER 权限。您还需要获得存储权限才能运行此示例。
from jnius import autoclass, cast
PythonActivity = autoclass('org.kivy.android.PythonActivity')
try:
Environment = autoclass("android.os.Environment")
path = Environment.getExternalStorageDirectory().toString()
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
context = cast('android.content.Context', currentActivity.getApplicationContext())
File = autoclass('java.io.File')
file = File(path+"/test.jpg")
BitmapFactory = autoclass('android.graphics.BitmapFactory')
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath())
WallpaperManager = autoclass('android.app.WallpaperManager')
manager = WallpaperManager.getInstance(context)
manager.setBitmap(bitmap)
except Exception as e:
print(e)
我有一个简单的应用程序,除其他外,我需要这个应用程序能够更改 Android 上设备的壁纸。
现在,我在网上四处寻找,pyjnius seems like the obvious choice. The problem now is I don't know the first thing about java but a quick google search produces the WallpaperManager 作为我可以使用的东西。
问题是:如何使用 pyjnius 在我的 kivy 应用程序上实现壁纸管理器功能。 再一次,不是 java 开发者所以不要开枪
我也不知道 Java,但在检查了一些 java 示例后,我生成了一个解决方案。不要忘记为您的 buildozer.spec 文件添加 SET_WALLPAPER 权限。您还需要获得存储权限才能运行此示例。
from jnius import autoclass, cast
PythonActivity = autoclass('org.kivy.android.PythonActivity')
try:
Environment = autoclass("android.os.Environment")
path = Environment.getExternalStorageDirectory().toString()
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
context = cast('android.content.Context', currentActivity.getApplicationContext())
File = autoclass('java.io.File')
file = File(path+"/test.jpg")
BitmapFactory = autoclass('android.graphics.BitmapFactory')
bitmap = BitmapFactory.decodeFile(file.getAbsolutePath())
WallpaperManager = autoclass('android.app.WallpaperManager')
manager = WallpaperManager.getInstance(context)
manager.setBitmap(bitmap)
except Exception as e:
print(e)