編輯:關於Android編程
來興趣時寫了些Kivy的代碼,調試卻總感覺不是很方便。直接打包到public.mp3的方式太繁鎖,用文件共享的軟件又發現沒有一個好用的,
用samba filesharing本來也只是慢,但是更新的版本之後就一直提示說wifi沒有tethering,意思是wifi熱點沒有打開,但是打開了還是提示沒有tethering。
找了個叫什麼卓*力的文件管理器,下載了samba插件後輸入用戶名和密碼死活不對,被搞得實在惱火,花了點時間寫了個通過adb同步安卓文件的工具,用著也挺爽的。
事件為什麼總是要搞得這麼復雜呢?簡簡單單多好?愚蠢的人類啊。
sync.py
import os
from os.path import join, getsize
import pickle
import subprocess
file_info = None
def compile_source():
for root, dirs, files in os.walk('.'):
for f in files:
if f in ['sync.py','dump.pkl']:
continue
if not f.endswith('.py'):
continue
p = join(root,f)
size = os.path.getsize(p)
fstat = os.stat(p)
info = (size,fstat.st_mtime)
if p in file_info and info == file_info[p]:
if os.path.exists(p.replace('.py','.pyo')):
continue
print 'compile ',p
print subprocess.check_output('python -OO -m py_compile '+p)
def sync_source():
for root, dirs, files in os.walk('.'):
for f in files:
if f in ['sync.py','sync.pyo','dump.pkl']:
continue
# if f.endswith('.py'):
# continue
p = join(root,f)
size = os.path.getsize(p)
fstat = os.stat(p)
info = (size,fstat.st_mtime)
if p in file_info and info == file_info[p]:
continue
file_info[p] = info
root_dir = '/mnt/sdcard/kivy/'
# root_dir = '/mnt/shell/emulated/0/org.test.kivycatalog'
cmd = ['adb','push',p,join(root_dir,p[2:].replace('\\','/'))]
print ' '.join(cmd)
print subprocess.check_output(cmd)
with open('dump.pkl','wb') as f:
pickle.dump(file_info,f)
if __name__ == '__main__':
try:
with open('dump.pkl','rb') as f:
file_info = pickle.load(f)
except Exception,e:
print e
file_info = {}
compile_source()
sync_source()
把sync.py放到代碼的根目錄,執行,會自動把PC端已經修改的文件同步到安卓端,類似輸出如下:
./sync.py
compile .\main.py
adb push .\main.py /mnt/sdcard/kivy/main.py
406 KB/s (5839 bytes in 0.014s)
adb push .\main.pyo /mnt/sdcard/kivy/main.pyo
403 KB/s (5372 bytes in 0.013s)
Android創建與解析XML(二)——詳解Dom方式
1. Dom概述Dom方式創建XML,應用了標准xml構造器 javax.xml.parsers.DocumentBuilder 來創建 XML 文檔,需要導入以下內容j
Android開發筆記之:ListView刷新順序的問題詳解
背景一個典型的ListView,每個Item顯示一個TextView,代表一個Task,需要實現二個編輯方式:一個是用CheckBox來標識任務已經完成,另一個要實現的編
Android開發之Mediaplayer狀態轉換圖及音頻焦點
前言 之前博客裡已經將了MediaPlayer的簡單應用,如何使用MediaPlayer在Android應用中播放音頻。這篇博客在MediaPlayer使用的基礎
Android OpenGL ES繪圖教程之三 : 繪制圖形
在定義了將要被OpenGL繪制的形狀之後,你當然想要繪制它們。使用OpenGL ES 2.0繪制圖形需要的代碼可能比你想象的要多,因為API提供了大量的圖形渲染管道控制接