You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于桌面Python脚本在Android屏幕显示图像的技术问询

Solution to Display Full-Screen Habit Tracking Chart on Moto Z Play via Python Desktop Script

Got it, let's walk through practical, no-app-required approaches to get your 16×31 habit tracking chart displayed full-screen on your Moto Z Play via a wired connection—all controlled from your Python desktop script. These methods leverage ADB (Android Debug Bridge) since you're comfortable with command-line/scripted workflows, and they keep things lightweight without needing to build a separate Android app.

This uses your device's native gallery app to display the image full-screen, which is reliable and requires minimal setup.

Steps:

  1. Prepare ADB & Device:

    • Ensure your Moto Z Play has USB Debugging enabled (Settings > Developer Options > USB Debugging; if you don't see Developer Options, go to Settings > About Phone and tap Build Number 7 times).
    • Connect your device to your computer via USB, and authorize the computer's connection request on your phone.
    • Make sure ADB is installed on your desktop (it's part of the Android SDK Platform Tools, which you can set up easily).
  2. Generate & Push Your Chart:

    • In your Python script, generate your 16×31 floating-point annotated chart (e.g., using Matplotlib) and save it as a high-res image (e.g., habit_chart.png).
    • Use Python to run ADB commands to push the image to your device's storage:
      import subprocess
      
      # Push image to device's Pictures folder
      subprocess.run(["adb", "push", "habit_chart.png", "/sdcard/Pictures/"])
      
  3. Launch Full-Screen Gallery View:

    • Execute an ADB intent to open the image in full-screen mode. For Google Photos (common on Moto devices), use:
      subprocess.run([
          "adb", "shell", "am", "start",
          "-a", "android.intent.action.VIEW",
          "-d", "file:///sdcard/Pictures/habit_chart.png",
          "-t", "image/png",
          "--activity-fullscreen"
      ])
      
    • If the above doesn't work for your native gallery, find the correct app package/activity by opening the image manually in the gallery, then running adb shell dumpsys window | grep mCurrentFocus to get the package name (e.g., com.android.gallery3d), then replace the intent command with that package's full-screen activity.
  4. Stop Display When Needed:

    • To terminate the full-screen view, kill the gallery app process:
      # Replace with your gallery's package name if needed
      subprocess.run(["adb", "shell", "am", "force-stop", "com.google.android.apps.photos"])
      

Approach 2: Python + ADB + Full-Screen HTML (More Flexible)

If you want more control over how the image scales (e.g., ensuring it fits perfectly without cropping), use a simple HTML page that forces full-screen display, then open it via Chrome.

Steps:

  1. Generate HTML & Image:

    • Create a minimal HTML file (fullscreen_chart.html) to display your image:
      <!DOCTYPE html>
      <html>
      <head>
          <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
          <style>
              body { margin: 0; padding: 0; overflow: hidden; background: black; }
              img { width: 100vw; height: 100vh; object-fit: contain; }
          </style>
      </head>
      <body>
          <img src="file:///sdcard/Pictures/habit_chart.png" alt="Habit Tracking Chart">
      </body>
      </html>
      
    • Push both the HTML file and your chart image to the device:
      subprocess.run(["adb", "push", "fullscreen_chart.html", "/sdcard/Pictures/"])
      subprocess.run(["adb", "push", "habit_chart.png", "/sdcard/Pictures/"])
      
  2. Launch Chrome in Full-Screen:

    • Use ADB to open the HTML file in Chrome's full-screen mode:
      subprocess.run([
          "adb", "shell", "am", "start",
          "-n", "com.android.chrome/com.google.android.apps.chrome.Main",
          "-d", "file:///sdcard/Pictures/fullscreen_chart.html",
          "--activity-fullscreen"
      ])
      
  3. Stop Display:

    • Kill the Chrome process to exit the full-screen view:
      subprocess.run(["adb", "shell", "am", "force-stop", "com.android.chrome"])
      

Approach 3: Integrated Python ADB Library (Cleaner Scripting)

For a more Pythonic workflow (without calling subprocess for every ADB command), use the adb-shell library to handle device communication directly in your script.

Example Code:

from adb_shell.adb_device import AdbDeviceUsb
from adb_shell.auth.sign_pythonrsa import PythonRSASigner
import os
import matplotlib.pyplot as plt
import numpy as np

# ----------------------
# Step 1: Generate your habit chart
# ----------------------
# Replace this with your actual 16x31 floating-point data
habit_data = np.random.rand(16, 31)  # Example random data
plt.figure(figsize=(10, 5), dpi=300)
plt.imshow(habit_data, cmap="viridis", aspect="auto")
plt.axis("off")
plt.savefig("habit_chart.png", bbox_inches="tight", pad_inches=0)
plt.close()

# ----------------------
# Step 2: Connect to device via ADB
# ----------------------
device = AdbDeviceUsb()

# Load ADB private key (default path: ~/.android/adbkey)
with open(os.path.expanduser("~/.android/adbkey"), "rb") as f:
    priv_key = f.read()
signer = PythonRSASigner("", priv_key)

# Connect to the device
device.connect(rsa_keys=[signer], auth_timeout=10)

# ----------------------
# Step 3: Push files to device
# ----------------------
device.push("habit_chart.png", "/sdcard/Pictures/habit_chart.png")

# ----------------------
# Step 4: Launch full-screen gallery view
# ----------------------
device.shell('''
am start -a android.intent.action.VIEW \
-d file:///sdcard/Pictures/habit_chart.png \
-t image/png \
--activity-fullscreen
''')

# ----------------------
# Step 5: Wait for stop command
# ----------------------
input("Press Enter to stop displaying the chart...")

# ----------------------
# Step 6: Cleanup
# ----------------------
device.shell("am force-stop com.google.android.apps.photos")
device.close()

Setup Notes:

  • Install the adb-shell library first: pip install adb-shell
  • If you get authentication errors, ensure your ADB key is correctly located and your device has authorized your computer.

内容的提问来源于stack exchange,提问作者Conrad Selig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:09