こものAndroidメモ

Androidアプリの開発メモブログ!!

アンドロイダー公認デベロッパーフォーラム —

Androidアプリの大手のレビューサイトである「アンドロイダー」さんのイベントが開催されるということで東京へ行ってきました。

その名も『アンドロイダー公認デベロッパーフォーラム』というイベントです。

 

アンドロイダー公認デベロッパーフォーラム

 

アンドロイダー公認デベロッパーフォーラム

「アンドロイダー」さんでは、実在する開発者かどうかを身元確認して、アプリのセキュリティーをバイナリレベルでチェックして、その上で認定する公認デベロッパーという制度をとっています。

今回のイベントは、その公認デベロッパーのみが参加できるイベントでした。

 

 

Androidの弱点の一つに、セキュリティへの問題があります。

「アンドロイダー」さんでは、そのあたりを真剣に取り組んでいるという印象でした。

 

アプリのコンテンツが安全でも、広告モジュールが安全でないケースがあるらしいです。

そのため、広告の安全性をチェックして認定する公認広告モジュールという取り組みについて発表されていました。

 

イベントスライド

 

イベントスライド

 

戦隊ものキャラクターがマスコットなので、ゆるい感じの印象もありますが、中で働く人たちはとても真面目な方たちでした。

アンドロイダーマスコット

 

東京まで行った甲斐があって、いろいろ学べました。

 



GDG京都のもくもく会 —

年末のGDG京都のもくもく会へ行ってきました。

 

GDG京都のもくもく会

 

みなさん、もくもくと作業を進めていました。

Google Developer Groupなので、Googleのテクノロジーに関する開発がメインです。
僕はクリスマスに向けてAndroidアプリを開発していました。

 

懇親会にも参加して、いろいろな人と交流できました。

楽しかったです。



リストのシャッフル処理 —

リストのシャッフル処理を書いてみました。
 

数字とステータスを持つクラスを作成し、そのクラスのリストを作成します。
リストの内容のアイテムはとりあえず10個とし、それらには連番をふります。
 

そして、それらをシャッフルして、それまで連番になっていたリストをシャッフルするというものです。
 

import java.util.ArrayList;
import java.util.Collections;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ShufulleMainActivity extends Activity {

	private class NumberItem {
		public int Number;
		public boolean Status;
	}

	private ArrayList<NumberItem> mNumberList = null;
	private final int max_Number = 10;

	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int ran = setRandomNumber();

		for(int i = 0; i < ran; i++){
			NumberItem item =  mNumberList.get(i);
			Log.d("", "" + item.Number);
		}
	}

	private int setRandomNumber()
	{
		if(mNumberList != null){
			mNumberList.clear();
			mNumberList = null;
		}

		mNumberList = new ArrayList<NumberItem>();

		for(int i = 0; i < max_Number; i++){
			NumberItem item = new NumberItem();
			item.Number = i;
			item.Status = false;

			mNumberList.add(item);
		}

		/** シャッフル処理. */
		Collections.shuffle(mNumberList);

		return(mNumberList.size());
	}
}

 

[実行結果 例]
9
2
5
1
8
7
0
4
6
3
 

シャッフルなので、当然毎回実行結果が変わってきます。
ゲームなどでランダム要素を使いたいときにシャッフルは便利ですね。



初期読み込み時のサンプル —

Activityの読み込み時に「読み込み中…」というダイアログを表示するサンプルです。
 

スレッドを走らせて、裏で通信処理などの何らかの処理が走るのことを想定しています。
何らかの処理の代わりに、今回は5秒のスリープをいれます。
 

スレッドが終了したら、「読み込み中…」のダイアログを非表示にします。
 

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class WaitActivity extends Activity {
	private final int MSG_INIT_SUCCESS = 0;
    private ProgressDialog m_ProgressDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    	setContentView(R.layout.main);

    	/** ウェイト表示のダイアログ. */
        m_ProgressDialog = new ProgressDialog(this);
        m_ProgressDialog.setTitle("");
        m_ProgressDialog.setMessage("読み込み中…");
        m_ProgressDialog.setIndeterminate(false);
        m_ProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        m_ProgressDialog.show();

    	/** 画面初期化用のスレッドを起動. */
    	Thread thread = new Thread(new Runnable(){
			public void run() {
				startInitWaitTH();
			}
		});

    	thread.start();
    }

	/** 初期のスレッド処理. */
	private void startInitWaitTH(){

		/** ダミー処理 5秒待つ. */
		try {
			Thread.sleep(5000);
		} catch (Exception e){
		}

        /** 初期化成功のメッセージを送ってる .*/
        if(m_handler != null){
        	m_handler.sendEmptyMessage(MSG_INIT_SUCCESS);
        }
	}

	/** スレッドからメッセージ取得時の処理. */
	private Handler m_handler = new Handler() {
		public void handleMessage(Message msg) {

        	if(msg.what == MSG_INIT_SUCCESS){
            	/** 初期描画処理を行う. */
            	initViewProc();
        	}
        }
	};

        /** 初期描画処理. */
	private void initViewProc(){

		if(m_ProgressDialog != null) {
			m_ProgressDialog.dismiss();
		}
	}

	/** 破棄時の処理. */
	@Override
	public void onDestroy() {
        super.onDestroy();

        if(m_handler != null) {
        	m_handler = null;
        }
        m_ProgressDialog = null;
	}
}