スキップしてメイン コンテンツに移動

投稿

4月, 2012の投稿を表示しています

SD カードにテキストを保存したい

Android 端末のファイル操作について漠然とやりたいなぁということを書いた記事はこちら

やりたいこと「SDカードにテキストを保存したい」

流れはこんな感じでしょうか

SD カードの状態を取得するSD カードのパスを取得する作成するファイルを作成するテキストを書き込む終了処理


SD カードの状態を取得するfinal String state = Environment.getExternalStorageState();SDカードがマウントされいなければ以降の処理ができません。
対応方法:ユーザにSDカードをマウントして!ってダイアログか何かでお願いする


        // SD カードのマウント状況
        if (!Environment.MEDIA_MOUNTED.equals(state)) {


            // SD カードがマウントされていない(取り外されている)ため
            // SD カードに対するファイル操作はできないため処理を終了します


Log.w("File", "SDカードがマウントされていません");
            return;
        }


SDカードはマウントされているが読み込み専用になっている場合も以降の処理ができません。
対応方法:ユーザにSDカードが読み込み専用を解除して!ってダイアログか何かでお願いする


        if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {


            // SD カードが読み込み専用になっています
            // SD カードにファイルを作成、書き込み操作ができないため処理を終了します


Log.w("File", "SDカードが読み込み専用になっています");
            return;
        }




SD カードのパスを取得する        // SD カードのディレクトリを取得します
        final File extrernalStrageDirectory = Environment.getExternalStorageDirectory();


作成するファイルを作成する     …

File 入出力

Android 端末の

SD カードにファイルを保存したい。SDカードにあるファイルを読み込みたい。アプリが作成したデータベースファイルをSDカードにコピーしたいキャッシュファイルを操作したいやりたいことは多いけれどどうやればいいんだろう? というのが・・・・HT-03A 発売前の頃に思ってたことでした。
最近はGoogle Drive のファイルを操作したい アプリデータのバックアップ先として使ってみたい他の端末とデータを同期させるのに使ってみたい記録計のアプリを作ったらPCでも見られたらいいなぁなどなど
最近ファイル操作をしていないので、思い出しながらメモを残したいと思います。
自分用のメモとして残すので記事の進捗は気分次第かも コメントやリクエストがあれば頑張りまぁす。
というか・・・一人で寂しく開発しているので仲間を作りたいなぁ

端末に登録されているアカウント一覧を取得する [AccountManager]

Google のサービスをアプリから利用したい時に認証を行う必要があります。
認証を行う際にメールアドレスとパスワードを入れなければいけません。
認証としては当然ですね

Android 端末に Google アカウントが登録されていれば認証も簡単にできるんですが、
今回はアカウントリストを取得するということだけを目的としてサンプルアプリを作りたいと思います。


ひどいですね・・・アカウント一覧となると画面キャプチャがまともにお見せできません m(_ _)m





Android プロジェクトを新規作成します省略・・・・

AndroidManifest.xml に許可の記述を追加します<uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>


ソースコード

package org.caldia.android.sample.accountmanager;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
/**
 * メイン画面
 * @author k-matsuda@caldia.org
 *
 */
public class MainActivity extends Activity {
    /**
     * アカウント情報を表示するテキストビュー
     */
    private TextView mAccountNameTextView;
    @Override
    public void onCreate(
            final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // アカウント情報を表示するテキストビューを取得します
        m…

Android 端末をサーバーにする(ServerSocket)

所有しているAndroid端末が8台になりました・・・・
メールが来るたびに全部の端末が通知音を鳴らすのでうるさくて困ってます。
これを解決したい!
<------------------------>
試しに作りました。
http://www.youtube.com/watch?v=Zf2MzMLekeg&feature=youtube_gdata_player
<------------------------>




1台以外はサイレントモードにしておけばいいんですが、使っているうちに音量を上げてしまっています。
大きな問題でもないんですが、寝ている時に音がなると鬱陶しいので全部の端末を簡単にサイレントにしたいんです。
以前作ったアプリ(音量設定cVolume)はスケジュール機能があるので、決まった時間になると音量を自動で設定します。これで十分満足はしてます。
これは決まった時間になったら・・・しかもすべての端末に設定をしなければいけません。 面倒です。
ということで、1台の端末から全部の端末を制御してしまおうと思いました。
今回作ろうとしているものは電池消費が激しくなるとおもわれるのでマーケットへは公開しません。 「ただ作りたい」それだけです。
受け側(音量を設定される側)と送り側(音量操作をする側)に分けてアプリを作ります。実際はひとつのアプリで完結させます。
受け側7台をServerSocket を使って待機します。送り側1台で無線LAN内にある端末を検索してSocketを使って各端末に音量設定命令を送ります。受け側は命令受信、音量設定完了のメッセージを送り側に返信します。
これだけです。
ServerSocket
bind するポートは 8080 です。ドキュメントに書かれているのかどうかわかりませんが、このポート以外はバインドできませんでした。

IPアドレスを検索する
無線LAN内にある端末の検索は ping を送信して応答があったIPアドレスのリストを作成します。ソケット接続で応答があるものを残します。 IP アドレスはよく変わるので保存しません。所有している端末数はわかっているので検索に余分な時間がかからないように工夫します。さらに、無線LAN機器とかPCとかの台数もあるので考慮します。

受け側
接続待機をするための設定画面を用意します。 サービスを起動、終了するため…

[GAE]開発環境構築 Python

Eclipse を使った開発をしたいと思い、開発環境の構築をしました。

Eclipse は Pleiades の All in One をダウンロードして日本語化されています。

python は 2.5 をインストールしようと思ってたのに 2.7 をインストールしていました。

Eclipse のプラグインとしては PyDev をしました。


開発環境構築をしながら残したメモを公開します。


https://docs.google.com/document/pub?id=1FgYG2siIy8pxtTsmOcy7cTNHgkUq4S0OB6uDAHsg3SQ

[GAE]Google App Engine で Python と Java のどちらを使うか

Google App Engine (GAE) で使える言語は Python と Java があります。
どちらの言語を使用するか・・・


けっこうわかりやすく開設してくれているページがありました。


App Engineではどの言語を使えばいいのかhttp://d.hatena.ne.jp/higayasuo/20100319/1268984735


私は Python は業務レベルの知識はありません。可能であれば Java で実装したいのですが、将来のことを考えると新しい言語の習得は大切なことだと思っています。

背中を押してくれるような情報がないかと探していました。

上記ページでは Python がいい!という記載は特にないのですが、私が Python を学習しようと思うには十分な情報だったと思います。


GAE は数分間アクセスが無ければインスタンスが終了(spin-down)してしまいます。私のアプリは頻繁にアクセスされることがないため毎回終了してしまっているように感じます。

インスタンスが開始(spin-up) する時間は Python の方が Java よりも何倍も早いという事が上記ページに記載がありました。


Android アプリのライセンスチェックとして使用していることもあり、アプリインストール直後の1回と機能追加したとき、任意のタイミングだけでアクセスされる使い方のため、アクセス数は非常に少ないです。私のアプリがそんなにダウンロードされていないということなんですけどね。

重量級のフレームワークを使用する予定もないので、どちらの言語を使っても同じという印象ですが、今回は Python を使用したいと思いました。


Java と Python ではどちらがいいと思いますか?
ご意見をいただければ幸いです。