Files
Android-pyApi/android_pyapi/__init__.py
T
shuiyu1123 506f9ac725 feat: 新增 42 个 Android API 模块
新增模块覆盖:
系统层 (14): system, security, print, opengl, renderscript, transition,
test, service_notification, service_controls, service_quicksettings,
service_wallpaper, service_autofill, service_dreams, service_vr

应用层 (13): app_admin, app_backup, app_job, app_usage, app_role,
app_people, appwidget, companion, credentials, mtp, sip, telecom, speech

硬件媒体层 (15): hardware_display, hardware_fingerprint, hardware_usb,
hardware_input, media_audiofx, media_browse, media_session, media_tv,
media_midi, media_projection, uwb, se, view_autofill, view_textclassifier,
view_translation

总计 94 个模块,75,342 行代码
2026-06-24 12:00:28 +00:00

380 lines
10 KiB
Python

"""
Android-pyApi — Android API 全面 Python 翻译
==============================================
方法签名完全对齐 Android SDK,跨平台运行于 Windows/macOS/Linux。
用法:
from android_pyapi import Intent, Context, Uri, Bitmap, View
from android_pyapi.java.io import File, FileInputStream
from android_pyapi.java.util import ArrayList, HashMap
from android_pyapi.org.json import JSONObject, JSONArray
设计原则:
1. 方法名、参数名、返回类型完全对齐 Android SDK
2. 能桌面实现的 → 真实实现 (基于 PIL/sqlite3/socket 等)
3. 无法桌面实现的 → 返回合理默认值或抛出 AndroidOnlyError
4. 所有常量值与 Android SDK 一致
"""
from ._core import (
AndroidOnlyError,
Stub,
android_context,
get_context,
_sdcard_root,
_app_data_dir,
_package_name,
)
# android.* 包
from .android.app import *
from .android.content import *
from .android.content_pm import *
from .android.os import *
from .android.view import *
from .android.view_accessibility import *
from .android.view_animation import *
from .android.view_inputmethod import *
from .android.widget import *
from .android.graphics import *
from .android.graphics_drawable import *
from .android.graphics_pdf import *
from .android.net import *
from .android.net_wifi import *
from .android.media import *
from .android.hardware import *
from .android.hardware_camera2 import *
from .android.hardware_biometrics import *
from .android.location import *
from .android.database import *
from .android.database_sqlite import *
from .android.provider import *
from .android.telephony import *
from .android.bluetooth import *
from .android.bluetooth_le import *
from .android.text import *
from .android.util import *
from .android.preference import *
from .android.webkit import *
from .android.nfc import *
from .android.speech_tts import *
from .android.inputmethod import *
from .android.app_admin import *
from .android.app_backup import *
from .android.app_job import *
from .android.app_people import *
from .android.app_role import *
from .android.app_usage import *
from .android.appwidget import *
from .android.companion import *
from .android.credentials import *
from .android.hardware_display import *
from .android.hardware_fingerprint import *
from .android.hardware_input import *
from .android.hardware_usb import *
from .android.media_audiofx import *
from .android.media_browse import *
from .android.media_midi import *
from .android.media_projection import *
from .android.media_session import *
from .android.media_tv import *
from .android.mtp import *
from .android.opengl import *
from .android.print import *
from .android.renderscript import *
from .android.se import *
from .android.security import *
from .android.service_autofill import *
from .android.service_controls import *
from .android.service_dreams import *
from .android.service_notification import *
from .android.service_quicksettings import *
from .android.service_vr import *
from .android.service_wallpaper import *
from .android.sip import *
from .android.speech import *
from .android.system import *
from .android.telecom import *
from .android.test import *
from .android.transition import *
from .android.uwb import *
from .android.view_autofill import *
from .android.view_textclassifier import *
from .android.view_translation import *
# java.* 包
from .java.io import *
from .java.net import *
from .java.util import *
from .java.util_regex import *
from .java.util_zip import *
from .java.util_concurrent import *
from .java.lang import *
from .java.math import *
from .java.text import *
from .java.time import *
from .java.nio import *
from .java.nio_file import *
from .java.security import *
from .java.crypto import *
# org.* 包
from .org.json import *
# Base64 (标准 Android API)
import base64 as _base64
class Base64:
DEFAULT = 0
NO_PADDING = 1
NO_WRAP = 2
CRLF = 4
URL_SAFE = 8
NO_CLOSE = 16
@staticmethod
def encodeToString(input_data, flags=0):
if isinstance(input_data, str):
input_data = input_data.encode('utf-8')
return _base64.b64encode(input_data).decode('ascii')
@staticmethod
def decode(str_val, flags=0):
return _base64.b64decode(str_val)
@staticmethod
def encode(input_data, flags=0):
if isinstance(input_data, str):
input_data = input_data.encode('utf-8')
return _base64.b64encode(input_data)
# Scanner (java.util)
class Scanner:
def __init__(self, source):
if isinstance(source, str):
self._source = source
else:
self._source = str(source)
self._pos = 0
def next(self):
while self._pos < len(self._source) and self._source[self._pos].isspace():
self._pos += 1
start = self._pos
while self._pos < len(self._source) and not self._source[self._pos].isspace():
self._pos += 1
if start == self._pos:
raise Exception("NoSuchElementException")
return self._source[start:self._pos]
def hasNext(self):
pos = self._pos
while pos < len(self._source) and self._source[pos].isspace():
pos += 1
return pos < len(self._source)
def nextInt(self):
return int(self.next())
def close(self):
pass
# Timer (java.util)
class Timer:
def __init__(self, name=None, daemon=False):
import threading
self._thread = None
self._tasks = []
def schedule(self, task, delay=None, period=None):
import threading
if delay is None:
self._run_once(task)
elif period is None:
self._run_delayed(task, delay)
else:
self._run_periodic(task, delay, period)
def _run_once(self, task):
t = threading.Thread(target=task.run)
t.daemon = True
self._tasks.append(t)
t.start()
def _run_delayed(self, task, delay_ms):
import threading
def _run():
import time
time.sleep(delay_ms / 1000.0)
task.run()
t = threading.Thread(target=_run)
t.daemon = True
self._tasks.append(t)
t.start()
def _run_periodic(self, task, delay_ms, period_ms):
import threading
def _run():
import time
time.sleep(delay_ms / 1000.0)
while True:
task.run()
time.sleep(period_ms / 1000.0)
t = threading.Thread(target=_run)
t.daemon = True
self._tasks.append(t)
t.start()
def cancel(self):
pass
def purge(self):
return 0
class TimerTask:
def __init__(self):
self._cancelled = False
def run(self):
pass
def cancel(self):
self._cancelled = True
def scheduledExecutionTime(self):
return 0
__version__ = "1.0.0"
__all__ = [
# android
"AccessibilityNodeInfo", "AccessibilityService",
"ActivityManager",
"AlphaAnimation",
"Animation",
"AppWidgetManager", "AppWidgetProvider", "AppWidgetProviderInfo",
"AudioManager",
"AutofillManager", "AutofillValue",
"BackupAgent", "BackupManager",
"Base64",
"BatteryManager",
"BiometricPrompt",
"Bitmap", "BitmapDrawable", "BitmapFactory",
"BluetoothAdapter", "BluetoothDevice",
"BroadcastReceiver",
"Build",
"Bundle",
"Button",
"CalendarContract",
"Call",
"CameraManager",
"Canvas",
"CheckBox",
"Color",
"CompanionDeviceManager",
"ConnectivityManager",
"ContentResolver",
"ContentValues",
"ContactsContract",
"Context",
"CredentialManager",
"Cursor",
"DevicePolicyManager",
"DisplayManager",
"Drawable",
"EditText",
"Environment",
"FingerprintManager",
"Geocoder",
"Handler",
"Html",
"ImageView",
"InputDevice",
"InputManager",
"InputMethodManager",
"Intent",
"IntentFilter",
"JobInfo", "JobScheduler", "JobService",
"KeyChain",
"ListView",
"Location",
"LocationManager",
"Log",
"Looper",
"Matrix",
"MediaBrowser", "MediaController",
"MediaPlayer",
"MediaProjectionManager",
"MediaRecorder",
"MediaSession",
"MediaStore",
"Message",
"MidiDevice", "MidiManager",
"MtpDevice",
"NetworkInfo",
"Os", "OsConstants",
"PackageInfo", "PackageManager",
"Paint",
"PdfRenderer",
"PeopleManager",
"PowerManager",
"PrintAttributes", "PrintDocumentAdapter", "PrintManager",
"ProgressBar",
"Rect", "RectF",
"RoleManager",
"ScrollView",
"SensorManager",
"Settings",
"SharedPreferences",
"SmsManager",
"SpannableString",
"SpeechRecognizer",
"Spinner",
"SQLiteDatabase", "SQLiteOpenHelper",
"StructStat",
"Switch",
"TelecomManager",
"TelephonyManager",
"TextClassifier",
"TextToSpeech",
"TextUtils",
"TextView",
"Toast",
"TranslateAnimation",
"TranslationManager",
"TvInputManager",
"Typeface",
"TypedValue",
"Uri",
"UsageStatsManager",
"UsbDevice", "UsbManager",
"UwbManager",
"View", "ViewGroup",
"VirtualDisplay",
"WebView",
"WifiManager",
# java
"File", "FileInputStream", "FileOutputStream",
"BufferedReader", "BufferedWriter",
"InputStreamReader", "OutputStreamWriter",
"URL", "HttpURLConnection", "Socket", "ServerSocket",
"ArrayList", "HashMap", "HashSet", "LinkedList",
"Collections", "Arrays", "Calendar", "Date", "Random",
"UUID", "Scanner", "Timer", "TimerTask",
"Pattern", "Matcher",
"ZipFile", "GZIPInputStream", "GZIPOutputStream",
"ExecutorService", "Executors", "Future", "Callable",
"String", "StringBuilder", "StringBuffer",
"Integer", "Math", "System", "Thread",
"BigInteger", "BigDecimal",
"SimpleDateFormat", "DecimalFormat",
"LocalDateTime", "LocalDate", "LocalTime", "Instant", "Duration", "Period",
"ChronoUnit", "ChronoField", "DayOfWeek", "Month", "ZoneId", "ZoneOffset",
"DateTimeFormatter",
"ByteBuffer", "Files", "Path", "Paths",
"MessageDigest", "SecureRandom",
"Cipher", "Mac", "KeyGenerator",
# org
"JSONObject", "JSONArray", "JSONException",
]