## 以eclipse -clean命令从命令行启动 eclipse
## 配置Android模拟器
点击上图右边的按钮(像个手机一样的),打开AVD管理器后,点击 New 新建一个模拟器,输入Name 叫 avd4.0,指定 Target 选择 Android4.0 ,然后再分配 SD Card的大小 256M,最后 Create AVD。
## 我们的 Hello World(We run it together!)
选择 File > New > Android Project,命名为HelloWorld。
## 调试
G:\02-greenTools\adt\adt-bundle-windows-x86-20131030\sdk\platform-tools
http://www.cnblogs.com/meil/archive/2012/05/24/2516055.html
C:\Users\zpc>adb devices
List of devices attached
## 问题起因: 帮同事排查一个SVN资源库导入后无法使用的问题,checkout时报错
Expected FS format '2'; found format '3'
期待文件系统(FS)格式 “2”;找到格式“3”
熟悉SVN的朋友应该知道,Subversion大版本更新时有可能会对其文件格式进行调整,因此内部有文件格式版本的说法,以上报错信息在网上搜一下就知道,版本2和版本3分别对应Subversion的1.4.x和1.5.x,于是问题归结为如何给资源库降级,从而得到与1.4兼容的dump文件。方法很简单,记录如下,供需要的朋友参考:
首先在1.5.x的Subversion环境下新建一个与1.4.x兼容的资源库
svnadmin --pre-1.5-compatible create project01
然后将之前无法正常导入1.4.x的dump文件(dumpfile.old)导入
svnadmin load project01 < dumpfile.old
最后再做一次导出即可
svnadmin dump project01 > dumpfule.new
回到1.4.x的Subversion环境,新的dump文件(dumpfile.new)就可以正常导入和使用了。
##
G:\svn\helloworld>svn --version
svn, version 1.8.10 (r1615264)
compiled Aug 10 2014, 15:48:46 on x86-microsoft-windows
G:\svn\helloworld>svnadmin --version
svnadmin, version 1.8.10 (r1615264)
compiled Aug 10 2014, 15:48:46 on x86-microsoft-windows
G:\svn\helloworld>svnadmin help create
--pre-1.6-compatible : deprecated; see --compatible-version
G:\svn\helloworld>svnadmin --pre-1.6-compatible create helloworld
## 安卓布局
http://www.cnblogs.com/devinzhang/archive/2012/01/19/2327535.html
一些配置信息,存放在/data/data/com.anroid.phone/shared_pres目录下
一些配置信息,存放在/data/data/com.anroid.phone/shared_pres目录下
手机联系人,存放在 /data/data/com.android.providers.contacts/database/contact2.db
数据库存储默认路径为/data/data/databases
https://github.com/connectbot/connectbot
adb install "F:\01.prj\andriod\apk\ConnectBot-v1.8.2.apk"
adb uninstall ConnectBot
原因在于安装后的包名已将改变,变为AndroidMainifest.xml文件中<manifest>节点下,package元素所指定的名字
##
1、下载文件
语法:adb pull [文件名] /源路径/
2、上传文件
语法:adb push [文件名] /目标路径/
## 在adb shell下执行sqlite3访问数据库出现/system/bin/sh: sqlite3: not found
http://blog.csdn.net/ygc87/article/details/7452422
http://download.csdn.net/detail/ygc87/4219518
## JAVA中int转String类型有三种方法
1》String.valueOf(i)
2》 Integer.toString(i)
3》 i+""
## open failed: EACCES (Permission denied)
http://blog.csdn.net/zxkevin1989/article/details/7464550/
在AndroidManifest.xml文件中加入一句话。
<manifest>
<application>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>
## http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html
cd /data/data/com.example.helloworld/databases
## 怎么改变TextView字体大小
在xml下加个属性android:textSize="25sp",在java下setTextSize()方法。
## Eclipse创建AVD,点ok创建总是没有反应
我刚也碰到这个问题,恰好处理了,你们可以参考下:
为android SDK设置一个环境变量:变量名为:ANDROID_SDK_HOME
变量值为一个路径,该路径不是SDK的安装目录路径,请注意!!!!该路径是代表AVD的保存位置。
比如:可以把AVD的路径设置为:D:\某个文件夹名
启动命令行: Win+R-->cmd ,进入 Android SDK 的 tools 目录(命令行下的cd命令应该会吧,百度一下就行),执行 android.bat avd
(补充:Win7环境,可以在tools目录下,按下 Shift+右击选择‘ 在此处打开命令窗口(W) ’直接进入该目录):
android.bat avd 命令执行后,弹出Eclipse创建AVD的窗口(就是你截图之前那个窗口)
这样就能创建了,点OK一下不行就多点两下,会卡一下未响应,一会儿就好了,显示创建完成。
## 另一种思路
启动命令行: Win+R-->cmd ,进入 Android SDK 的 tools 目录(命令行下的cd命令应该会吧,百度一下就行),执行 android.bat avd
(补充:Win7环境,可以在tools目录下,按下 Shift+右击选择‘ 在此处打开命令窗口(W) ’直接进入该目录):
android.bat avd 命令执行后,弹出Eclipse创建AVD的窗口(就是你截图之前那个窗口)
这样就能创建了,点OK一下不行就多点两下,会卡一下未响应,一会儿就好了,显示创建完成。
求救: eclipse 无法创建avd, 点OK没有反应, 请问怎么回事?
[2015-03-30 22:32:22 - HelloWorld] ------------------------------
[2015-03-30 22:32:22 - HelloWorld] Android Launch!
[2015-03-30 22:32:22 - HelloWorld] The connection to adb is down, and a severe error has occured.
[2015-03-30 22:32:22 - HelloWorld] You must restart adb and Eclipse.
[2015-03-30 22:32:22 - HelloWorld] Please ensure that adb is correctly located at 'G:\02-greenTools\adt\adt-bundle-windows-x86-20131030\sdk\platform-tools\adb.exe' and can be executed.
## #!/usr/bin/env python
#encoding: utf-8
import sys #引用sys模块进来,并不是进行sys的第一次加载
reload(sys) #重新加载sys
sys.setdefaultencoding('utf8') ##调用setdefaultencoding函数
## 小米助手下载 http://zhushou.xiaomi.com/
##
* 方法:getDataDirectory()
解释:返回 File ,获取 Android 数据目录。
* 方法:getDownloadCacheDirectory()
解释:返回 File ,获取 Android 下载/缓存内容目录。
* 方法:getExternalStorageDirectory()
解释:返回 File ,获取外部存储目录即 SDCard
* 方法:getExternalStoragePublicDirectory(String type)
解释:返回 File ,取一个高端的公用的外部存储器目录来摆放某些类型的文件
* 方法:getExternalStorageState()
解释:返回 File ,获取外部存储设备的当前状态
* 方法:getRootDirectory()
解释:返回 File ,获取 Android 的根目录
## Eclipse怎样禁用不需要的插件
Window -> Preferences -> General -> StartUp and Shutdown
## NotificationManager.notify(id, Notification);
Toast
http://android.tgbus.com/Android/tutorial/201103/346236.shtml
http://www.cnblogs.com/HEWU10/p/4371027.html
## startActivity(new Intent( android.provider.Settings.ACTION_SETTINGS));
http://www.cnblogs.com/codingmyworld/archive/2011/08/21/2147829.html
## 设置界面Setting Activity
http://www.cnblogs.com/HEWU10/p/4371027.html
private void showSettings()
{
final Intent intent = new Intent(this,SettingsActivity.class);
startActivity(intent);
}
### sdcard与sdcard2的选择
PreferenceScreen
http://www.cnblogs.com/jasonyso/archive/2013/02/06/2905529.html
以下文件增加界面显示的xml: /HelloWorld/res/xml/pref_general.xml
<ListPreference
android:defaultValue="-1"
android:entries="@array/pref_voice_location_titles"
android:entryValues="@array/pref_voice_location_values"
android:key="example_list"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_title_voice_location" />
以下文件增加标题, list的文本数组与数值数组: /HelloWorld/res/values/strings_activity_settings.xml
<string name="pref_title_voice_location">Select voice location</string>
<string-array name="pref_voice_location_titles">
<item>sdcard</item>
<item>sdcard2</item>
<item>None</item>
</string-array>
<string-array name="pref_voice_location_values">
<item>1</item>
<item>0</item>
<item>-1</item>
</string-array>
响应:
http://blog.csdn.net/yuzhiboyi/article/details/7676293
在MainActivity中要使用的地方增加如下代码:
SharedPreferences pre = PreferenceManager.getDefaultSharedPreferences(this);
String dir=pre.getString("down_savedir", "");//两个参数,一个是key,就是在PreferenceActivity的xml中设置的,另一个是取不到值时的默认值
onPreferenceChange
## Log.i
http://www.cnblogs.com/jxgxy/archive/2012/08/15/2640417.html
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。
转自: http://blog.csdn.net/ouyangtianhan/article/details/7922855
用C的人一定知道__FILE__和__LINE__,但是Java中 并没有这样的定义,有时候调试多线程就很不方便,没办法,自己动手,丰衣足食~用下面的函数取得当前行号。
函数:
/**
*得到Exception所在代码的行数
*如果没有行信息,返回-1
*/
public static int getLineNumber(Exception e){
StackTraceElement[] trace =e.getStackTrace();
if(trace==null||trace.length==0) return -1; //
return trace[0].getLineNumber();
}
使用例子:
System.out.println(“Current line:”+getLineNumber(new Exception()));
## 日志保存
转自: http://blog.csdn.net/taki_dsm/article/details/7804922
Intent stateService = new Intent (context,LogService.class);
context.stopService(stateService);
<service
android:name="com.wondersgroup.qdyth.zsjc.services.LogService" >
</service>
## 安卓体系结构
Android 应用程序组成
1.Activity
好比网页的一个页面逻辑,可返回页面的值。59页
1.1 Intent 我理解好比 消息路由。
2.Broadcast Intent Receiver
好比事件注册,事件委托,60页
2.1 NotificationManager
内容消息,当事件触发的时候,通过此独享通知用户这些事件发生了。
3.Service
理解为后台线程服务,好比酷我后台运行听歌。
4.Content Provider
对外部程序提供操作自己程序数据的接口。
http://www.cnblogs.com/muzeet/articles/4023001.html
转自: http://www.cnblogs.com/yejiurui/archive/2013/01/01/2841772.html
使用下面的两个属性,就可以实现对齐功能
android:gravity用于设置View组件的对齐方式
android:layout_gravity用于设置Container组件的对齐方式
<Button
android:id=
"@+id/button1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:layout_gravity=
"center"
android:text=
"全部选择"
/>
## sqlite profession expert
http://www.sqliteexpert.com/download.html
gravity
英[ˈgrævəti] 重力, 万有引力
gravity的中文意思就是”重心“,就是表示view横向和纵向的停靠位置
android:gravity:是对view控件本身来说的,是用来设置view本身的文本应该显示在view的什么位置,默认值是左侧
android:layout_gravity:是相对于包含改元素的父元素来说的,设置该元素在父元素的什么位置
分散对齐
http://www.it165.net/pro/html/201406/14955.html
使用表格布局, 做分散对齐
http://www.open-open.com/lib/view/open1373595423128.html
1.在TableLayout下的代码及效果
<
EditText
android:layout_weight
=
"1"
/>
2. Android:stretchColumns 伸缩列
3. android:collapseColumns缩进列
将第2个例子里的Android:stretchColumns缩进下加一行代码:
android:collapseColumns="0"
4,如果按钮里文字过多,则会出现下面这种情况
android:shrinkColumns="2"
Layout_span=”2” 伸展2倍
Layout_column=”2” 位置固定到第三列
## LOG
http://blog.csdn.net/kesenhoo/article/details/6996834
##打开android的帮助很慢
remove_adt_google_info.py
解决后, 可以使用SHIFT+F2查看帮助
##andriod源码折行的设置
Preferences/Java/Code Style/Formatter/Active profile/Edit/Line Wrapping/200
Windows ->preferences->Java->Code Style->Formatter->Edit->Line Wrapping
Maximum line width
Line wrapping policy
Set line width for preview window
InstallJRE/EDIT…/”JRE/RT.JAR”->JAVADOC LOCATION
帮助使用F1
在Eclipse中查看JVM的内存使用情况 推荐方法1实现..菜单 Window => Preferences => General => 右边,把 Show Heap Status 打上勾就会在右下角任务栏显示内存监视器,并且可以点击内存回收。
##ECLIPSE很有用的文档,包括设置与很用用的快捷键
http://blog.csdn.net/nosodeep/article/details/25389305
## private Integer getDataItemCount() throws Exception {
##04-05 13:14:09.855: W/System.err(14548): java.lang.SecurityException: Neither user 10132 nor current process has android.permission.WAKE_LOCK.
<uses-permission android:name="android.permission.WAKE_LOCK" />
## read failed: EBADF (Bad file number)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> // add
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
##? 小米 ADB 每次提示“替换应用程序”?
## I/MainActivity(15353): output database file name: /data/data/com.example.helloworld/databases/cet.db
## E/MediaPlayer(16410): Should have subtitle controller already set
private void scanInternalSubtitleTracks() {
if (mSubtitleController == null) {
Log.e(TAG, "Should have subtitle controller already set");
return;
}
public void setSubtitleAnchor(
SubtitleController controller,
SubtitleController.Anchor anchor) {
// TODO: create SubtitleController in MediaPlayer
mSubtitleController = controller;
mSubtitleController.setAnchor(anchor);
}
VideoView.java
private void openVideo() {
mMediaPlayer = new MediaPlayer();
// TODO: create SubtitleController in MediaPlayer, but we need
// a context for the subtitle renderers
final Context context = getContext();
final SubtitleController controller = new SubtitleController(
context, mMediaPlayer.getMediaTimeProvider(), mMediaPlayer);
controller.registerRenderer(new WebVttRenderer(context));
mMediaPlayer.setSubtitleAnchor(controller, this);