## 以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创建总是没有反应

我刚也碰到这个问题,恰好处理了,你们可以参考下:

  1. 为android SDK设置一个环境变量:变量名为:ANDROID_SDK_HOME

  2. 变量值为一个路径,该路径不是SDK的安装目录路径,请注意!!!!该路径是代表AVD的保存位置。

  3. 比如:可以把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() 。根据首字母对应VERBOSEDEBUG,INFO, WARN,ERROR。

## [Android] 打印Log的行号、函数、类名

转自: 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

## android中怎么让 button组件居中显示

转自: 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

## Eclipses中嵌入API文档

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);

05-26 01:00