2013年5月24日 星期五

android

1.camera 要定焦的方法

2.camera 可setPreviewSize 設定秀在螢幕上的size, setPictureSize 設定儲存照片的size,
但是這個size不能隨便亂設,必須由getSupportedPreviewSizes/getSupportedPictureSizes從中挑一組出來



2013年5月22日 星期三

to use startActivity post message to Line

Line跟facebook一樣在安裝了 Line/Facebook app後, 可以簡單的利用startActivity來進行一些簡單的PO文動作, 也就是藉由他本身的app去執行api。
相反來說, 若是想利用自己的app去發request 就要去add naver/facebook 的library, 這樣能做到的事更多, 但是較為麻煩。

這邊將介紹如何透過簡單的方式來PO文到line上

//判斷是否安裝了line
private boolean checkLineInstalled(){
PackageManager pm = getPackageManager();
m_appList = pm.getInstalledApplications(0);
boolean lineInstallFlag = false;
for (ApplicationInfo ai : m_appList) {
if(ai.packageName.equals(PACKAGE_NAME)){
lineInstallFlag = true;
break;
}
}
return lineInstallFlag;
}



//PO文字
public static final String PACKAGE_NAME = "jp.naver.line.android";
public static final String CLASS_NAME = "jp.naver.line.android.activity.selectchat.SelectChatActivity";
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setClassName(PACKAGE_NAME, CLASS_NAME);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, sendText);
startActivity(intent);



//PO圖片
String fname = "send_image.jpg";
String fileFullPath = Environment.getExternalStorageDirectory().getAbsolutePath()
+ File.separator + fname;


Uri uri = Uri.fromFile(new File(fileFullPath));
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setClassName(PACKAGE_NAME, CLASS_NAME);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(intent);



Reference: https://gist.github.com/ekos/3993270


帶出所以有可以share的app


Reference:http://orgcent.com/android-app-intent-share-list/

2013年5月16日 星期四

Facebook search

http://developers.facebook.com/docs/reference/api/search/#results



Session session = Session.getActiveSession();
Bundle params = new Bundle();
params.putString("fields", "picture,name");
params.putString("q", "淡水");
params.putString("type", "place");
Request request = new Request(session, "search", params, HttpMethod.GET, callback);
RequestAsyncTask task = new RequestAsyncTask(request);    
task.execute();



主要在Bundle的"fields"選擇要filter的資料,"q"為要搜尋的字串, "type"為搜尋類型

use Facebook graph api to delete object on android

在graph api中的Request 共有三個HttpMethod  (GET、POST、DELETE),也就是用來-->

1.搜尋資料,http://tang0110.blogspot.tw/2013/05/to-get-facebook-data-by-facebook-sdk-in.html
    支前在這篇文章已經詳加說明了如何透過tool去找尋路徑到object(nodes), 並挑選需要的fields。




Bundle params = new Bundle();
Request request = new Request(session, OBJECT_ID, params, HttpMethod.DELETE, callback);
RequestAsyncTask task = new RequestAsyncTask(request);    
task.execute();

2.刪除資料,OBJECT_ID要填入id,但是如果是要unlikes就必須填入OBJECT_ID/likes,因為likes這個node沒有ID只好用connection連過去


3.增加資料,http://developers.facebook.com/docs/reference/api/post/




2013年5月14日 星期二

To get Facebook data by facebook SDK in android

利用此tool(http://developers.facebook.com/tools/explorer) 下指令去取得資料(綠點), 以檢視是否有自己所需要的資訊




1.必須先get access token,選擇所要的permission, 這是因為不論人、 apppages 要使用facebook, 都必須給予一個token
 
=======================================================================

Session session = Session.getActiveSession();
Bundle params = new Bundle();
params.putString("fields", "source, link");
Request request = new Request(session, "OBJECT_ID/photos", params, HttpMethod.GET, callback);
RequestAsyncTask task = new RequestAsyncTask(request);   
task.execute();
2.會有fieldsconnections可以選擇(紅點)
 fields相當於是在這open graph nodes的屬性,可用Bundle來選擇  connnections意思是連到open graph 中另一個node,可用RequestgraphPath來決定
(nodes-connection->nodes  , 10150153595592320/photos)

或者可以寫成

params.putString("fields""photos.fields(source,link)");
Request request = new Request(session, "OBJECT_ID", params, HttpMethod.GET, callback);



=======================================================================

JSONObject  json=  response.getGraphObject().getInnerJSONObject();
JSONArray  jsonArrayData=json.getJSONArray("data");
for(int i=0;i<jsonArrayData.length();i++)
{
     JSONObject jsonObjectImages = (JSONObject)jsonArrayData.opt(i);
     Log.d("AAA","json:"+jsonObjectImages.getString("source"));
}
3.最後在callback的地方會得到JSON的資料格式,大括弧包起來的轉成JSONObject,中括弧包起來的轉成JSONArray  

2013年5月8日 星期三

Facebook login

這裡會提到幾個讓你的APP登入FB的幾個要點

1.需要import FacebookSDK專案, 並讓你的project add lib
2. 在程式碼裡加入該加的loginButton及callBack等..
(http://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/)

3.在facebook developer上要申請 app的開發網頁,會產生一組app_id, 在manifest要加入login的activity以及appid

        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>   
        <activity
            android:name="com.facebook.LoginActivity">
       </activity>

4.並且要用電腦裡的keystore 透過openssl產生key hashes填入facebook developer, 或者從callback中回報的錯誤getMssage得到key hashes

(http://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/)
(http://changyy.pixnet.net/blog/post/29201245-android-%E9%96%8B%E7%99%BC%E7%AD%86%E8%A8%98---%E4%BD%BF%E7%94%A8-facebook-sdk)