スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[Android]VolleyのStringRequestでCookieを使えるようにカスタム

・リクエスト用のクラスファイル「SCStringRequest」を作成します。

//SCStringRequest.java
package <任意>;

import android.util.Log;
import android.webkit.CookieManager;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

public class SCStringRequest extends StringRequest {
//ここにはドメインURLを指定する(例 : http://google.co.jp)
private static final String DOMAIN_URL = "ドメインURL";

public SCStringRequest(int method, String url, Response.Listener listener, Response.ErrorListener errorListener) {
super(method, url, listener, errorListener);
}

public SCStringRequest(String url, Response.Listener listener, Response.ErrorListener errorListener) {
super(url, listener, errorListener);
}

@Override
public Map getHeaders() throws AuthFailureError {
//クッキーを取り出してヘッダーにセット
CookieManager cm = CookieManager.getInstance();
String cookie = cm.getCookie(DOMAIN_URL);
Map headers = new HashMap();

headers.put("Cookie",cookie);

return headers;
}

@Override
protected Response parseNetworkResponse(NetworkResponse response) {
//リクエスト時、ネットワークから帰ってきたリクエストに含まれるクッキーをCookieManagerに保存する
Map headers = response.headers;
String cookie = (String) headers.get("Set-Cookie");

//ログ
Log.v("Login","cookie:"+cookie);
Log.v("Login","statusCode:"+response.statusCode);

CookieManager.getInstance().setCookie(DOMAIN_URL,cookie);

//ログ
String getcookie = CookieManager.getInstance().getCookie(DOMAIN_URL);
Log.v("Login", "getCookie:" + getcookie);

return super.parseNetworkResponse(response);
}
}

・次に実装側のActivityで以下を記述します。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//クッキー利用時必要
CookieSyncManager.createInstance(this);
}

@Override
protected void onResume() {
super.onResume();
//クッキー利用時必要
CookieSyncManager.getInstance().startSync();
}

@Override
protected void onPause() {
super.onPause();
//クッキー利用時必要
CookieSyncManager.getInstance().stopSync();
}


POST通信などはStringRequestで行うのと同じ方法なので割愛します。


参考URL:CookieSyncManager::createInstance() needs to be called before CookieSyncManager::getInstance()
このエントリーをはてなブックマークに追加

[Android]WebViewを利用する

設置したWebViewに対して、Googleを表示する。

・AndroidManifest.xmlに以下を記述する
<!-- manifestタグの子として追加 -->
<uses-permission android:name="android.permission.INTERNET"/>
※これを追加しないといつまでも「ページが見つかりません」となる


・設置したwebViewを取得して、WebViewClientを設定し、URL文字列を指定する
//WebViewClientを設定しない場合は、ブラウザが立ち上がってそっちで表示される。
this.webView = (WebView)findViewById(R.id.webView);
this.webView.setWebViewClient(new WebViewClient());
this.webView.loadUrl("http://www.google.com/");



参考URL:android webview実装方法のまとめ
このエントリーをはてなブックマークに追加

tag : Android WebView 表示

[Android]TextViewの見切れた文字列を「...」にする

//コードで見切れた文字列の最後を「...」にする
textview.setEllipsize(TextUtils.TruncateAt.END);
<!--レイアウトXMLファイルをいじる場合-->
<TextView
...省略...
android:ellipsize="end"
/>
このエントリーをはてなブックマークに追加

tag : Android TextView ...

[Android]ListViewの項目を選択不可にする

ただ触らせたくないならListViewのインスタンスにsetEnable(false)でよいかもしれないが、これではスクロールも行えない。
そこで、ArrayAdapterを継承したインナークラスを定義してから利用する事にします。
//HogeActivityクラス内で書いた場合
public class HogeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hoge_activity);
//カスタムArrayAdapter(タッチしてもハイライトしない)
CustomArrayAdapter adapter = new CustomArrayAdapter(this,R.layout.simple_list_item_1);
adapter.add("red");
adapter.add("green");
adapter.add("blue");
ResultListView.setAdapter(adapter);
}

//項目をタッチした時のハイライト表示をキャンセルするためのArrayAdapter継承クラス
private class CustomArrayAdapter extends ArrayAdapter<String> {
//今回はこのコンストラクタしかオーバーライドしていないが、
//本来は3つあるので3つともオーバーライドすると良い(詳しくはListViewの公式API参照)
public ResultListViewArrayAdapter(Context context,int textViewResId) {
super(context,textViewResId);
}

//以下2つをfalseで返すと選択が行えなくなる
public boolean areAllItemsEnabled() {
return false;
}
public boolean isEnabled(int position) {
return false;
}
}
}
このエントリーをはてなブックマークに追加

tag : Android ListView ArrayAdapter 選択不可

[Android]効果音の再生

効果音再生にはSoundPoolを使います。
また、再生ファイルはresフォルダ下にnew > android resource directoryからrawを選択して追加し、その下に音ファイルを追加します。(このコードでは、se.wavを使用しています)
//効果音を再生する
//SoundPoolオブジェクト生成
SoundPool sound_pool = new SoundPool(1, AudioManager.STREAM_MUSIC,0);
//loadメソッドで読み込んだ音楽が、読み込み終わった時のリスナーを登録
sound_pool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if(0 == status) { //読み込みに成功するとステータスが0で帰って来る
//音楽再生
soundPool.play(sampleId,1.0f,1.0f,0,0,1.0f);
}
}
});
//音楽ファイルを読み込む(R.raw.seはse.wavファイルをResourcesクラス内で定義したもの)
sound_pool.load(getApplicationContext(),R.raw.se,0);
※開発環境はAndroidStudioを使用しています。


参考URL:SoundPoolで効果音を鳴らす
このエントリーをはてなブックマークに追加

tag : Android 効果音 再生 SoundPool

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。