カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Webサービスとの連携

org.apache.httpクラスを使ってHTTP通信をおこないます。

AndroidManifest.xmlにインターネット接続許可の記述を追加します。

<uses-permission android:name="android.permission.INTERNET" />

Getメソッド

public String doGet( String url )
{
    try
    {
        HttpGet method = new HttpGet( url );

        DefaultHttpClient client = new DefaultHttpClient();

        // ヘッダを設定する
        method.setHeader( "Connection", "Keep-Alive" );

        HttpResponse response = client.execute( method );
        int status = response.getStatusLine().getStatusCode();
        if ( status != HttpStatus.SC_OK )
            throw new Exception( "" );

        return EntityUtils.toString( response.getEntity(), "UTF-8" );
    }
    catch ( Exception e )
    {
        return null;
    }
}

続きを読む…»

6,909 views

アイコンの表示がおかしいとき

アイコンキャッシュのファイル「IconCache.db」を削除し、再起動します。

C:\Documents and Settings\Administrator\Local Settings\Application Data
2,434 views

Androidアプリ公開

Androidアプリ「たびろく」を公開しました。
https://market.android.com/search?q=tabiroku&c=apps

「たびろく」は旅の思い出を記録するアプリです。
タイトルとコメントを付けて保存することができ、それをそのままmixiやFacebook等のメール更新が可能です。

1,694 views

設定項目を無効にする Preference

PreferenceActivityのonCreateで処理します。
例では条件を何も指定していませんが、任意に条件を指定して実装してください。

例)チェックボックスの設定項目を無効化

PreferenceScreen prefScreen = getPreferenceScreen();
CheckBoxPreference checkboxPreference = 
    (CheckBoxPreference)prefScreen.findPreference("key");
checkboxPreference.setEnabled(false);

子項目として親項目と依存関係を持たせる場合

PreferenceScreen prefScreen = getPreferenceScreen();
CheckBoxPreference checkboxPreference = 
    (CheckBoxPreference)prefScreen.findPreference("key");
checkboxPreference.setDependency("親項目のkey");

xmlで指定

android:dependency="親項目のandroid:key"
9,410 views

GoogleMapのアイコンタップ

GoogleMapにアイコンを表示し、タップすると何らかの処理をしたいとき、通常のonTapメソッドで処理を実行しようとすると、地図の拡大縮小時、アイコンに指が触れているとタップされたことになってしまいます。

これを回避するために、ジェスチャーリスナーを実装し、シングルタップアップにて処理をするようにします。

android.view.GestureDetector.OnGestureListener
public class PinItemizedOverlay extends ItemizedOverlay<OverlayItem> implements OnGestureListener {

    private List<GeoPoint> points = new ArrayList<GeoPoint>();
    private Context context;
    private GestureDetector gestureDetector = null;
    private MapView mMapView;
    private Drawable defaultMarker;

    public PinItemizedOverlay(Drawable defaultMarker, Context context) {
        super( boundCenterBottom(defaultMarker) );
        setLastFocusedIndex(-1);
        populate();
        this.context = context;
        this.defaultMarker = defaultMarker;
        gestureDetector = new GestureDetector(this);
    }

    @Override
    protected OverlayItem createItem(int i) {
        GeoPoint point = points.get(i);
        OverlayItem overlayItem = new OverlayItem(point, null, null);
        overlayItem.setMarker(boundCenterBottom(defaultMarker)); //これをしないとhitTestでNullPointerExceptionが発生します。
        return overlayItem;
    }

    @Override
    public int size() {
        return points.size();
    }

    public void addPin(GeoPoint point, String title, String snippet, int icontype) {
        if (getIndexGeoPoint(point) == -1) {
            this.points.add(point);
            this.icontype.add(icontype);
        }
        setLastFocusedIndex(-1);
        populate();
    }

    // 位置が一致するか(一致しない場合は -1を返す)
    private int getIndexGeoPoint(GeoPoint newPoint) {
       int result = -1;
       int size = this.points.size();
       for (int i = 0; i < size; i++) {
          GeoPoint point = this.points.get(i);
          if (point.equals(newPoint)) {
             result = i;
             break;
          }
       }
       return result;
    }

続きを読む…»

2,829 views