2015年6月11日 星期四

【Android】Android Studio中NDK開發



這幾可以參考

http://www.race604.com/android-studio-with-ndk/

http://www.cnblogs.com/SamFang/p/4179458.html

http://www.it165.net/pro/html/201212/4433.html

http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html

http://www.metsky.com/archives/614.html

2015年6月9日 星期二

【Android】Json 的建立


建立範例

{
    "type": "2",
    "body": {
        "description": [
            {
                "dns1": "140.113.17.5",
                "dns2": "140.113.1.1",
                "static": "1",
                "gateway": "140.113.17.254",
                "netmask": "255.255.255.0",
                "ip": "140.113.17.178"
            },
            {
                "dhcp": "0"
            },
            {
                "pppoe": "0"
            }
        ]
    },
    "deviceId": "BW-9FEFB676A5DC556C18D3D24D9FC334C4"
}


建立function

    /**
     * setWanInfoJson
     * @param responseJson
     */
    public String setWanInfoJson(Context ctx, String deviceId)  {

        JSONObject sendJson = new JSONObject();

        try {

            sendJson.put("type", "2");
            sendJson.put("deviceId", deviceId);


            // 構造三個JSONObject 、一個static, dhcp 和 pppoe物件
            JSONObject staticJson = new JSONObject();
            staticJson.put("static", "1");
            staticJson.put("ip", "140.113.17.178");
            staticJson.put("netmask", "255.255.255.0");
            staticJson.put("gateway", "140.113.17.254");
            staticJson.put("dns1", "140.113.17.5");
            staticJson.put("dns2", "140.113.1.1");

            JSONObject dhcpJson = new JSONObject();
            dhcpJson.put("dhcp", "0");

            JSONObject pppoeJson = new JSONObject();
            pppoeJson.put("pppoe", "0");

            // We add the object to the description Array
            JSONArray descriptionArr = new JSONArray();
            descriptionArr.put(staticJson);
            descriptionArr.put(dhcpJson);
            descriptionArr.put(pppoeJson);

            // We add the descriptionArr to the body object
            JSONObject body = new JSONObject();
            body.put("description", descriptionArr);

            // We add the object to the main object
            sendJson.put("body", body);



        } catch (JSONException e) {

            e.printStackTrace();
        }

        System.out.println("sendJson:" + sendJson.toString());

        return sendJson.toString();

    }




忘記某些資訊, 可參考

http://stackoverflow.com/questions/18983185/how-to-create-correct-jsonarray-in-java-using-jsonobject

https://code.google.com/p/json-simple/wiki/DecodingExamples#Example_1_-_Convenient_way:_Use_JSONValue

2015年6月8日 星期一

【Android】Google Analytics v4


開發文件
https://developers.google.com/analytics/devguides/collection/android/v4/#setup-overview


AndroidManifest.xml 需要加入下面那個授權
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
不需要使用Application,也可以使用
最重要的就是取得Tracker ,可以設到靜態變數裡,一直重複使用。


GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

Tracker mTracker = analytics.newTracker(PROPERTY_ID);

PROPERTY_ID 指的是追蹤編號
 應該長的像UA-18208XX-XX

主要有兩個程式要寫。
一個是追蹤畫面(某個Activity),一個是追蹤事件(某個動作,如click)
追蹤畫面,就拿Tracker寫以下的程式



mTracker.setScreenName("myScreen");
// Send a screen view.
mTracker.send(new HitBuilders.AppViewBuilder().build());

追蹤事件,則如下
// Build and send an Event.
mTracker.send(new HitBuilders.EventBuilder()
        .setCategory("Home")
        .setAction("click")
        .setLabel("AboutUs")
        .setValue(0)
        .build());

再到查詢結果,看看有沒有資料,選擇即時,選畫面,或事件,選擇畫面瀏覽量(近30分鐘)

https://www.google.com/analytics/web/



 

2015年6月4日 星期四

2015年6月3日 星期三

【JAVA】switch-case注意事项


在網上看到有一篇寫得很清楚, 留著記憶

http://blog.csdn.net/yangkai_hudong/article/details/8988420

2015年6月2日 星期二

【Android】Android Studio 之中使用 httpcore 與 httpmime


解決2個問題

1. WARNING: Dependency org.apache.httpcomponents:httpclient:4.3.5 is ignored for debug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages
 
2. Duplicate files copied in APK META-INF/NOTICE 





可在 build.gradle 之中, 加入

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:support-v4:22.1.1'

    compile files('libs/commons-lang-2.6.jar')     // 記得在 Libs 之中加入相對映的 jar 檔
    compile files('libs/httpcore-4.4.jar')
    compile files('libs/httpmime-4.3.5.jar')
}


android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'

    }
}

2015年5月30日 星期六

【JAVA】Hashtable


http://www.cnblogs.com/skywang12345/p/3310887.html

http://www.interinfo.com.tw/edoc/ch3/r_n_d.htm