忍者ブログ

アンドロイドのあれこれ

Camelliaはセキュリティマージンが高いと評価されているアルゴリズムとして、日本で開発されるものです。Androidから簡単に利用する目的で開発されたcamellia-androidライブラリーはGoogle Codeで無償公開されています。(Apache2ライセンス)

Camelliaについてはこちらの資料を参考ください
http://info.isl.ntt.co.jp/crypt/camellia/dl/Camellia2010v7_0.pdf

camellia-android
http://code.google.com/p/camellia-android

aes-sampleを動かすには aeslibとApache Commons Codecのライブラリーが必要です。
aes-sampleとaeslibのソースコードはここからダウンロードできます。
http://code.google.com/p/camellia-android/downloads/list

Apache Commons Codecのダウンロード
http://commons.apache.org/codec/download_codec.cgi

・・・つづきはこちら

アプリからデータ(ファイル)を内部と外部のデバイスへの保存方法を簡単に紹介します。

- デバイスの内部ストレージ上にプライベートなデータの保存
デバイスの内部ストレージに直接ファイルを保存することができます。デフォルトでアプリケーションにプライベートで、他のアプリケーションはそれにアクセスすることはできません 。ユーザーがアプリケーションをアンインストール、またアプリ情報からデータを消去するとそれらのファイルは削除されます。
    String filename = "my_file";
String filedata = "My string data";
try {
FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(filedata.getBytes());
fos.close();
} catch (IOException e) {

}

・・・つづきはこちら

Android LintはAndroidプロジェクトソースをスキャンして潜在的なバグ、正確性、セキュリティ、パフォーマンス、ユーザービリティ、国際化などのためにバグや最適化の改善を検出し警告してくれます。
LintはコマンドラインツールだけでなくADT(Android Development Tools)バーション16からIDEからも使えるようになりました。

以下の例はいくつかエラーの種類はLintのチェックができます

- 翻訳の未使用
- レイアウトパフォーマンスの問題
- 使われていないリソース
- 一貫性のない配列のサイズ(配列は複数の構成で定義されている場合)
- アクセシビリティや国際化の問題(ハードコード文字列、未確認コンテンツの説明など)
- アイコンの問題(行方不明の密度、重複アイコン、間違ったサイズなどなど)
- ユーザビリティの問題(テキストフィールドの入力タイプを指定されていないなど)
- AndroidManifest.xmlのエラー

・・・つづきはこちら

3日続いて連続にNFC関連の記事となります。今回は簡単なAndroid Beamの書き方を紹介します。

public class MainActivity extends Activity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {

private static final int MESSAGE_SENT = 1;
private NfcAdapter mNfcAdapter;
private static Context mContext;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mContext = this.getApplicationContext();

mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
mNfcAdapter.setNdefPushMessageCallback(this, this);
mNfcAdapter.setOnNdefPushCompleteCallback(this, this);
}

@Override
public NdefMessage createNdefMessage(NfcEvent event) {
//Beamで送りたいメッセージ
String text = "Beam text";
NdefRecord[] record = new NdefRecord[]{ createMimeRecord(
"application/com.example.demobeam", text.getBytes())

/**
* 他のデバイスがAndroidアプリケーションレコード(AAR)を
* 受信したときに指定されたアプリケーションが実行されることが保証されています。
*/
//,NdefRecord.createApplicationRecord("com.example.demobeam")
};
NdefMessage msg = new NdefMessage(record);
return msg;
}

public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
NdefRecord mimeRecord = new NdefRecord(
NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
return mimeRecord;
}

@Override
public void onResume() {
super.onResume();

//Beamのアクションを受け取ったとき
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Intent intent = getIntent();
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
//Beamのメッセージ
String receiveBeam = new String(msg.getRecords()[0].getPayload());
Toast.makeText(getApplicationContext(),
"received:" + receiveBeam,
Toast.LENGTH_LONG).show();
}
}

@Override
public void onNdefPushComplete(NfcEvent event) {
//Beam送信完了時のハンドラー
ndefPushHandler.obtainMessage(MESSAGE_SENT).sendToTarget();
}

private final static Handler ndefPushHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_SENT:
Toast.makeText(mContext,
"Beam sent.....",
Toast.LENGTH_LONG).show();
break;
}
}
};
}

・・・つづきはこちら

PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]