2018年6月16日土曜日

[Android SDK] targetSdkVersion 26に変更したらRemoteViewsで例外が発生して対処

メモガキのtargetSdkVersionを24から26に変更する作業を進めていたら、ウィジェット設定画面でウィジェットのプレビューが表示され無い問題に気づきました。



となるところが、



上部のプレビューが消えてしまいました。
このウィジェットのプレビューは、AppWidgetHostViewを利用してActivity中にAppWidgetを表示するビューを作成しています。

Android StudioのLogcatを確認すると、
android.widget.RemoteViews$ActionException: view: android.support.v7.widget.AppCompatImageView can't use method with RemoteViews: setImageBitmap(class android.graphics.Bitmap)

と出力されているため、AppCompatImageViewがAppWidgetで使えないことが原因であることはすぐに気づきました。
どこかの処理で、ImageViewがAppCompatImageViewに置き換えられてしまったようです(レイアウトファイルは変更していないから)。

試行錯誤していたら、rv.applyに対してContextを指定している箇所を、Activity(AppCompatActivity)からApplicationContextに変更して解決しました。
AppWidgetHostView hostView;
RemoteViews rv;
rv.apply(getApplicationContext(), mPreviewWidget);

hostView.removeAllViews();
//View view = rv.apply(this, hostView);
View view = rv.apply(getApplicationContext(), hostView);
hostView.addView(view);

targetSdkVersionを変えた際にsupport.v4のバージョンも変更したから、AppCompatActivityの挙動が変わったようですね。

2016年11月3日木曜日

[Android SDK] 画面の回転を固定にする

画面回転に対応したActivityを作成していた場合で、動的に回転を固定した場合には下記を実行することで固定できる。

■画面回転を固定にしたい場合
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

■画面回転の固定を解除したい場合
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

2015年6月10日水曜日

[メモガキ開発日記] 毎朝、今日のメモを表示する機能を作る

メモガキの新機能として、毎朝、今日のメモを確認できる機能を作ります。

使い道

通知機能(リマインダー)を使うことでもメモを見返せますが、朝に今日のメモをまとめて確認できるようにする。これだけでは、普通にメモガキを起動すれば確認できます。
そこで、メモガキを起動することを忘れたとしても、朝起きてスマホの画面をオンにするだけで、今日のメモが表示されるようにする。



作る

メモガキがスマホの画面がオンされたことを常時検知できる必要があるので、サービスを作成し、常時サービス内で画面オンイベントを受け取れるようにする。サービスが画面オンイベントを受け取ったら、今日のメモを表示するアクティビティを起動します。

全体像として、アクティビティ(Activity)、サービス(Service)、アンドロイド(Android)間の制御は次のように作成します。



①サービス起動、②サービス停止

サービスの起動・停止は、ContextのstartService、stopServiceメソッドを使います。
Context context = getActivity().getApplicationContext();
Intent serviceIntent = new Intent(context, RpService.class);// サービスのクラスを指定

// サービス起動
context.startService(serviceIntent);

// サービス停止
context.stopService(serviceIntent);


③画面オンの受け取り

画面オンイベントは、BroadcastReceiverを使うことでAndroidからイベントを受け取ることができます。
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action != null) {
            if (action.equals(Intent.ACTION_SCREEN_ON)) {
                // 画面ON時の処理

            }
        }
    }
};

サービス起動時、停止時にBroadcastReceiverの登録と解除が必要になります。
public class RpService extends Service {
...
    @Override
    public void onCreate() {
        super.onCreate();

        // ブロードキャストリスナーの登録
        // IntentFilterとして、画面オンを示すIntent.ACTION_SCREEN_ONを指定します
        registerReceiver(mBroadcastReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
    }
    @Override
    public void onDestroy() {
        super.onDestroy();

        // ブロードキャストリスナーの登録解除
        unregisterReceiver(mBroadcastReceiver);
    }
....
}


④アクティビティの起動

これはstartActivityを使って起動できるので省略します。


⑤設定再読込要求

設定画面等でサービスに関連する設定を変更した場合に、サービスに設定を再読込するよう要求する必要があります。今回だと、朝に今日のメモは表示しますが、朝のいつに表示するのか時刻を設定できる必要があります。その時刻を変更した際に、サービスも変更した設定情報を読込する必要があります。

これを実現するのに、LocalBroadcastManagerを使うと簡単に実現できます。
BroadcastManagerと同様な機能ですが、ブロードキャスト範囲がアプリ内に限定できます。
アクティビティ側からカスタムIntentを送信して、サービス側で受け取ります。

ブロードキャストを送信する場合は、LocalBroadcastManagerのインスタンスを取得して、sendBroadcastでIntentを送るだけ。
Context context = getApplicationContext();
LocalBroadcastManager.getInstance(context)
    .sendBroadcast(new Intent(RpNoteIntent.ACTION_UPDATE_SERVICE));


サービス側での受け取りは、BroadcastReceiverと同様にリスナーを作成します。
BroadcastReceiver mLocalBroadcastManager = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action != null) {
            if (action.equals(RpNoteIntent.ACTION_UPDATE_SERVICE)) {
                // 設定の再読込処理

            }
        }
    }
};

リスナーの登録・解除は、LocalBroadcastManagerのインスタンスに対して行います。
public class RpService extends Service {
...
    @Override
    public void onCreate() {
        super.onCreate();

        // ローカルブロードキャストリスナーの登録
        LocalBroadcastManager.getInstance(getApplicationContext())
            .registerReceiver(mLocalBroadcastReceiver, new IntentFilter(RpNoteIntent.ACTION_UPDATE_SERVICE));
    }
    @Override
    public void onDestroy() {
        super.onDestroy();

        // ローカルブロードキャストリスナーの登録解除
        LocalBroadcastManager.getInstance(getApplicationContext())
            .unregisterReceiver(mLocalBroadcastReceiver);
    }
....
}


この機能は、メモガキ Ver.0.14.8から実装されます。
ダウンロード (Google Play)


2013年11月25日月曜日

[Macアプリ] PNG画像のサイズを減らすアプリ

ImageAlphaというMac向けアプリを使うことで、PNG画像のサイズを減らせます。
(ダウンロードサイト:http://pngmini.com/)

24ビットのPNG画像をパレットを使用した8ビットに変換することでサイズを削減します。色彩豊かな画像の場合は、荒くなってしまいます。アイコン画像などは比較的色が少なく適している。

試しに、画像を256色 に減らしてみると、元の画像と比べて80%削減できました。
 8色に減らすと、88%削減できましたがパッと見で荒いです。
 背景も複数から選択して表示を試すことができます。

僕はAndroidアプリ向けの画像を作成するときに、容量を削減でき重宝しています。
OS X Mavericksでも問題無く動作しています。

2013年10月19日土曜日

[Mac] ダウンロードしたアプリが「壊れているためひらけません」と表示される

Android Studioの新しいバージョンをダウンロードしたけど、「"Android Studio.app"は壊れているため開けません。"ゴミ箱"に入れる必要があります。」と表示されて起動できない。


ダウンロードに失敗したかと思い、再度ダウンロードしましたがダメでした。
試行錯誤している内に、「システム環境設定」のセキュリティ設定を変えることで起動できました。

「ダウンロードしたアプリケーションの実行許可」の設定を「すべてのアプリケーションを許可」に一時的に変更しました。一度アプリ起動すれば、それ以降は設定を戻しても問題なかったです。


2013年10月9日水曜日

[Android SDK] ダイアログを自由にカスタマイズする

メモガキの日時設定画面はダイアログをカスタマイズして作成している。Dialogを継承して、onCreateをオーバライドしてsetContentViewを自由なレイアウトを指定します。タイトルバーや境界線を無くし、全画面表示にしています。


public class TestDialog extends Dialog {
 /* 〜〜〜 一部省略 〜〜〜*/
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

                // タイトルバーを非表示にする
  requestWindowFeature(Window.FEATURE_NO_TITLE); 

  setContentView(R.layout.dlg_deadline);

                // ダイアログの背景(境界線)を無くす(透明)
  getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

                // ダイアログの大きさ最大にする(任意のサイズも指定可能)
                getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

 }
 /* 〜〜〜 一部省略 〜〜〜*/
}

2013年10月7日月曜日

[Android SDK] 動的に設定画面(Preference)を作成する

ほとんどのAndroidアプリには設定画面が用意されている。

(例:メモガキの設定画面)

こういった設定画面は、.xmlファイルに記述するケースが多いが動的にプログラミングで作成することもできる。
例えば、デバッグ時、AndroidOSのバージョンに応じて表示する設定項目の場合に使える。

1から作成する場合

まずは設定項目を作成するために、PreferenceManagerを取得する。
// For Activity
PreferenceManager PreferenceActivity::getPreferenceManager()

// For Fragment
PreferenceManager PreferenceFragment::getPreferenceManager()
PreferenceManagerで設定項目のルート項目を作成する。
PreferenceScreen PreferenceManager::createPreferenceScreen(Context context);
以降は、設定項目を作成して追加して行く。
// Context context;
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(context);
PreferenceCategory category = new PreferenceCategory(context);
category.setTitle("Category");
root.addPreference(category);

PreferenceScreen item = getPreferenceManager().createPreferenceScreen(context);
item.setTitle("Item");
category.add(item);
最後に、設定画面に設定する。
// For Activity
// void PreferenceScreen::setPreferenceScreen(PreferenceScreen preferenceScreen)
// 
// For Fragment
// void PreferenceFragment::setPreferenceScreen(PreferenceScreen preferenceScreen)
//
setPreferenceScreen(root);

既存の設定画面に追加する場合

既存の設定項目のルート項目を取得する。
// For Activity
PreferenceScreen PreferenceActivity::getPreferenceScreen()

// For Fragment
PreferenceScreen PreferenceFragment::getPreferenceScreen()
取得したルート項目にさきほどと同様に追加していく。


参考までに

メモガキではアプリの更新履歴を、ファイル(res/raw)から更新履歴を情報を読み込み、動的に設定画面をベースに表示している。

public class RpNoteVersionFragment extends PreferenceListFragment {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setPreferenceScreen(createReleaseNote());
 }
 public PreferenceScreen createReleaseNote() {
  final Context c = getActivity();
  PreferenceScreen root = getPreferenceManager().createPreferenceScreen(c);
  
  BufferedReader reader = null;
  InputStream stream = null;
  String buffer = null;
  PreferenceCategory category = null;
  try {
   stream = c.getResources().openRawResource(R.raw.release_note);
   reader = new BufferedReader(new InputStreamReader(stream));
   while ((buffer = reader.readLine()) != null) {
    if (category == null) {
     category = new PreferenceCategory(c);
     category.setTitle(buffer);
     root.addPreference(category);
    } else if (buffer.equals("")) {
     category = null;
    } else {
     Preference item = new Preference(c);
     item.setTitle(buffer);
     item.setLayoutResource(R.layout.pref_single_item);
     category.addPreference(item);
    }
   }
  } catch (IOException ioe) {
   
  } finally {
   if (reader != null) {
    try {
     reader.close();
    } catch (IOException ioe) {}
   }
   if (stream != null) {
    try {
     stream.close();
    } catch (IOException ioe2) {}
   }
  }
  return root;
 }
}

// R.raw.release_noteの中身
Ver.0.3.0
Append text to an existing note with share.
Add icons of category.

Ver.0.2.0
Change an order of category display.

Ver.0.1.1
Display a widget, today's number of schedules. 

Ver.0.0.0
First version 

2013年1月6日日曜日

[無印良品] 旅行に便利な消臭効果のある袋

久々に無印良品に行ってきました。
いつ来ても、雰囲気が和みます。お店のレイアウトに、BGMが好きです。

正月バゲーンだから、無印良品も安売り品がないか探していると

消臭巾着というものがありました(写真左のやつ)。
説明書きに、「使用後の衣類等の不快臭を減少させる消臭生地を使用。洗濯後も効果が持続します。」って書かれていました。

これは、旅行、運動に便利ですね。
30%OFFってこともあって、即買っちゃいました(定価1,100円)。


これまるまるしてるけど、収納されている袋を出すと円柱っぽい袋になります(直径18×34cm)。



ついでに、USB端子つきのタップも購入してきました。
USB端子は合計出力1000mAなのでスマホを充電するのに使えそうです。

USBアダプタでこれでごちゃごちゃしてたタップを整理できそうです。

2012年12月9日日曜日

[Wii U] Wii Uが届いたので開封してみた

12月8日(土) ちょうど休日に、任天堂から新しいゲーム機、Wii Uが発売されました。
とりあえず、開封してみました。

Wii U専用段ボールでとどきました。


白色がよかったので、通常版を買いました。

中身は、タンスみたいに2段になっています。


通常版でも、必要最低限ついてるんですね。HDMIケーブルまで。

付属品、並べてみた。
なんで、電源ケーブル2本あるのかと思ったら、1本はGame Pad用だったんですね(笑


さっそく、本体の更新をはじめます。購入元より案内がきてました。
>> この度、お買い上げいただきました、
>> 『Wii U本体』でございますが、
>> 任天堂より、本体の更新に関する重要なお知らせがございました。


うちのインターネットは、テザリングなので3時間くらいかかるのかなぁー
 気長に待ちます

2012年11月13日火曜日

[Android SDK] 設定画面のレイアウトをカスタマイズする

Androidアプリには設定画面がつきものです。標準で設定画面を作るためのクラス(PreferenceActivity)が用意されており、XMLで設定項目を記述するだけで簡単に作れる。

ただ、設定画面のレイアウトをカスタマイズするには特殊なやり方が必要になります。

PreferenceActivityを継承してActivityを作るのは同じですが、setContentViewメソッドでレイアウトファイル(XML)を指定するところがポイント。
public class RpNotePreferenceActivity extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act_preference);
    addPreferencesFromResource(R.xml.preference);
  }
}

単純にレイアウトファイル(XML)を作成するだけではダメで、設定画面に置き換えるListViewを「android:id="@android:id/list"」属性付きで追加する必要があります。
簡単な例ですと次のようにすると、
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context=".activity.RpNotePreferenceActivity" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
 <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
  <Button
      android:id="@+id/button1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Button" />
    </LinearLayout>
</LinearLayout>

こんな感じで、画面下側にボタンがあるような設定画面が作れます(実際には、リストが設定項目に置き換わります)。

試してみてください。

2012年11月12日月曜日

[Android SDK] ImageViewを最前面にフローティングさせる

ドラッグ可能なリストビューを作成する過程で、ドラッグ中のアイテムを最前面でフローティングさせるのに苦労しましたので、そのやり方を記載します。
★オレンジ色の浮いているやつです。


実際は、ドラッグ対象のアイテムをBitmap化として、ImageViewで最前面に表示しています。

1.ViewをBitmapに変換する

たとえば、ListViewであれば、getChildAtでアイテムをViewとして取得できます。Bitmapを生成して、Canvasで描画すれば、簡単にViewをBitmapに変換できます。
// View view;
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas();
canvas.setBitmap(bitmap);
view.draw(canvas);
// (e.g.)
// ImageView imageView;
// imageView.setImageBitmap(bitmap);

2.ImageViewを最前面に表示する

最前面に表示するには、ImageViewをWindowManagerに追加します。
WindowManager.addView(View, WindowManager.LayoutParams)メソッドを使います。なお、いらなくなったらWindowManager.removeView(View)で削除できます。
WindowManager mWindowMgr = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
mWindowMgr.addView(imageView, layoutParams);
レイアウトパラメータを指定する必要があり、任意の位置に表示するのであれば次の値がいいと思います。
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
layoutParams.x       = 0; // 表示位置 x
layoutParams.y       = 0; // 表示位置 y
layoutParams.width   = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height  = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.flags   = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
layoutParams.format  = PixelFormat.TRANSLUCENT; // 透明を有効化

3.ImageViewの透明度指定

ドラッグ中のアイテムを見やすくするために、ImageViewを透過します。
ImageView.setAlpha(int)メソッドを使います。0〜255で透明度を指定します。値が大きいほど不透明になります。
//ImageView imageView;
imageView.setAlpha(128); // 透明度50% 

ただ、WindowManagerで透明度を有効にするには、必ず次を指定しておく必要があります。
// WindowManager.LayoutParams layoutParams;
layoutParams.format  = PixelFormat.TRANSLUCENT; // 透明を有効化

4.ImageViewを移動させるには

WindowManager.updateViewLayout(View, WindowManager.LayoutParams)メソッドでレイアウトを更新します。
WindowManager.addView(View, WindowManager.LayoutParams)メソッド時のWindowManager.LayoutParamsを保持しておき、x,y座標を変更して使いますと楽です。
// WindowManager mWindowMgr;
// WindowManager.LayoutParams layoutParams;
// ImageView imageView;
layoutParams.x       = 0; // 表示位置 x
layoutParams.y       = 0; // 表示位置 y
mWindowMgr.updateViewLayout(imageView, layoutParams);

こんな感じに、最前面でImageViewを自由に移動させらました。
ご参考にしてみてください。


2012年11月10日土曜日

[Android SDK] 埋め込みテキストファイルから文字列を取り出す

アプリ内に埋め込んだテキストファイルを文字列として取り出す方法を記載します。

ファイル構成

翻訳版も対応しているので、rawフォルダ名を変えて複数作成してください。
 +res
  +raw
   +update.txt (英語テキストファイル)
  +raw-ja
   +update.txt (日本語テキストファイル)

読み出しソース

ResourceクラスのopenRawResourceメソッドを使って読み出しをします。
// Context c;
String text = getRawTextFile(c, R.raw.update.txt);

private static String getRawTextFile(Context context, int resId) {
  InputStream st = null;
  byte[] buffer = null;
  try {
    st = context.getResources().openRawResource(resId);
      buffer = new byte[st.available()];
    while((st.read(buffer)) != -1) {}
  } catch (IOException e) {
  } finally{
    if (st != null) {
      try{
        st.close();
      }catch(IOException e2) {}
    }
  }
  if (buffer != null) {
    return new String(buffer);
  }
  return null;
}

こんな感じで、アプリの更新履歴をテキストファイルとしてアプリ内に埋め込んで使っています。

2012年11月9日金曜日

[Android SDK] ResourceからカラーフィルタしたBitmapを作成する

Resourceにある画像をカラーフィルタ処理をした、Bitmapを作成する方法を書きます。

ソース

// RemoteViews rv;
// int resId;
// Context context;
Bitmap icon = BitmapFactory.decodeResource(context.getResources(), resId);
Bitmap bitmap = Bitmap.createBitmap(icon.getWidth(), icon.getHeight(), icon.getConfig());
LightingColorFilter filter1 = new LightingColorFilter(0xFFFFFF, Color.WHITE);
Canvas canvas = new Canvas(bitmap);
Paint p = new Paint();
p.setColorFilter(filter1);
canvas.drawBitmap(icon, 0, 0, p);
// rv.setImageViewBitmap(R.id.icon, bitmap);

解説

ウィジェット作成していて、画像を貼り付けるにはResourceIDかBitmapしか方法がなくて、DrawableだったらsetColorFilterを使えば簡単にできたんだけど。仕方ないので、バッファBimapにカラーフィルタ処理付きで画像(Bitmap)を描画して作成しました。

結果

こんなアイコンをウィジェットに白色加工して貼り付けました。
↓





色違いアイコンを作り直さなくていいから楽ちん。



[Android アプリ] メモガキ (Memogaki)の公開

自作のAndroidアプリ「メモガキ (Memogaki)」を公開しました。

ダウンロード (Google Play)

簡単に言えば、TODOリストのような、メモアプリです。
メモのカテゴリ分けができるので、買い物リスト、予定、メモといった風に同じアプリで使い回しができます。

アプリの画面

実際の画面をペタペタと、、、

メモ閲覧画面

メモが一覧で表示されます。左側のタブでカテゴリを切り替えられます。


カレンダー表示

メモを予定して使う場合は、メモに日時をつけることでカレンダーで表示できます

メモ作成画面(簡易)

メモ程度なら、サクサクつくれるような画面にしてあります。
買い物メモで画面が切り替わってしまうと、入力するのが大変ですからね。

作成のきっかけ

アプリの開発のきっかけは、忘れ物防止、手軽に入力できるアプリがほしかった。
Google Playで探してみましたが、見つからなかったので開発してみました。

TODOリストようなですから、リマインダー機能(お知らせ機能)があります。
直前にアラームが鳴って、簡単な概要さえ分かれば思い出せますからね。

僕は、予定表、買い物リスト、アプリの不具合修正リスト、バスの時刻表メモ(写真)として使っています。いろいろな使い方を模索しつつ、今後改良していきます。


以上の説明で分かりづらい箇所もあるかと思いますが、ぜひ活用してみてください。

ダウンロード (Google Play)

更新履歴

ver.0.7.0(2013/7/25)

メモのリマインダー機能を繰り返し通知できるよう機能を追加しました。
例えば、毎週行う作業(TODO)に利用すると、毎週メモを再設定しなくとも、毎週通知してくれます。
メモの作成時の日時設定から設定できます。

ver.0.6.0(2013/2/2)

ウィジェットにカレンダーを追加しました。カレンダーからいつ予定が入っているのか確認できます。

ver.0.5.0(2012/12/26)

メモ一覧表示を改善しました。メモ一覧を「今日、明日、今週、今週以降、日時なし」の5つに区切って表示するよう改善しました。

ver.0.4.0(2012/11/20)

ウィジェット作成時にプレビュー機能がつきました。

ver.0.3.0 (2012/11/17)

他アプリから共有機能で、既存ノートの本文に内容を追記できるようになりました。

ver.0.2.0 (2012/11/12)

メニューから、カテゴリの並び替えが可能になりました。長押しのドラッグで簡単に並び替えられます。

ver.0.1.1 (2012/11/8)

今日の予定数を表示するウィジェット機能がつきました。すべてもしくはカテゴリー限定で表示できます。

ver.0.0.0 (2012/11/7)

初公開

2012年9月1日土曜日

[Xperia SX] 交換用バッテリーと専用充電器を買ってみました

スマホってあまりバッテリーが持たないので、補助バッテリーを購入しました。

「モバイルチャージャー」か「交換用バッテリー」で迷いましたが、交換用バッテリーだと入れ替えたらすぐ使えるから便利。あと持ち運び軽いってところかな。

Xperia SX専用の交換用バッテリーと専用充電器を購入しました。

・交換用バッテリー:BA700 (Xperia rayと型番が同じみたい)

ヤフオクに新品が安く出てたので、2つ合わせて3,500円と得しちゃった。
(バッテリーは発火事故とか怖いので、両方ともソニー純正品です)

専用充電器をちょこっと紹介。


スライド式になっています。

完全に中のトレーが外れます。

バッテリーを入れてみた。

USBケーブルをつないで充電している。側面が赤色に光る。


2012年8月28日火曜日

[Xperia SX] USB接続でMacからストレージの中を見る

MacからXperia SXの内蔵ストレージやSDカードの中身を見る方法を見つけました。Android 3.0以降からでしょうか?ストレージが、本体メモリ、内蔵ストレージ、SDカードって3つに増えてますね。前の記事で紹介した「Mac OSからUSBケーブルでMicro SD中のデータを見る」と比べて、内蔵ストレージもデータ操作できます。

Android公式のAndroid File Trasfer.appを使います。

1.Xperia SXの通信モードをメディア転送モード(MTP)に変更する必要があります。
初期値は、メディア転送モード(MTP)になっていますが、変更している方は「Mac OSからUSBケーブルでMicro SD中のデータを見る」を参考に変更してください。

2.Macにファイル転送アプリをインストールをダウンロードします。
 [ダウンロード] http://www.android.com/filetransfer/

 真ん中の[Download Now >>]からダウンロードできます。

3.ダウンロードし終わったらダブルクリックで.dmgファイルを起動します。すると、次のような画面が表示されますので、[Android File Trasfer.app]をドラッグで[Applications]にコピーします。
4.コピーした[Android File Trasfer.app]を起動します。

5.USBケーブルでMacとAndroidをつなぎます。

6.Finderみたいな画面が表示されますので、ファイルをドラッグ&ドロップでコピーできます。


2012年8月22日水曜日

[Android SDK] 全画面カスタムダイアログの作成

通常のダイアログは画面中央にちょこんと小窓が表示されますが、Activityのように全画面表示に変更することができます。

以下の手順で、ダイアログをカスタマイズします。
(ダイアログを継承して全画面表示にする際には、setContentViewでレイアウトを設定してから設定変更します)

1.ダイアログの大きさが全画面にする
//Dialog dialog;
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);


2.ダイアログの境界線を非表示にする

//Dialog dialog;
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));


3.タイトルバーを非常にする
//Dialog dialog;
requestWindowFeature(Window.FEATURE_NO_TITLE);



以上で全画面表示されるはずです。



[Xperia SX] テザリングのON/OFFを簡単にする

Xperia SXに機種変してからテザリングを活用しはじめましたが、設定画面からON/OFFを切り替えるのが手間でした。便利なアプリを見つけましたので紹介します。

テザリングを始めたきっかけは、Xi(クロッシィ)からテザリングを使用してもパケット定額で5,985円(*1)なのがありがたい。また、自宅の光インターネット(4,500円/月)をあまり使わないので、テザリングにまとめても通信速度制限(*2)がかかる通信量7GBには達しないので通信費を押さえられる。結果、FOMA比べるとパケット定額が500円ほど増えますが、それでもインターネット費用が浮くので大助かり。自宅のインターネットをやめないとしても、外出先でパソコンを使ってインターネットができるの便利です。
(*1) 2012年9月まではパケット定額1050円引きで4,935円
(*2) 2012年10月より通信量が7GB/月を超えると128Kbpsの通信速度の制限が始まる

Widgetsoid2.x (Google Play)になります。
ホーム画面にウィジェットを配置して、タップで簡単に設定をON/OFFを切り替えられます(テザリング以外にも、Wi-fiやBluetooth等も可能)。

簡単にホーム画面に設置するまで手順を記載します。
1.Widgetsoid2.x (Google Play)をインストールしましたら、ホーム画面をタップ長押しでメニューを表示させ、[ウィジェット]を選択します。

2.ウィジェット一覧から、[Widgetsoid Switcher(1*1)]を選択します。

3.下のツールバーから[Network]をタップして、真ん中の一覧から[ポータブルアクセスポイントトグル]にチェックを入れ、右下の[Apply]ボタンをタップします。

4.ホーム画面にウィジェットが配置されますので、タップしてON/OFF切り替えができるようになります。

(追伸) ZDbox (Google Play)を使うと通信使用量が、通知バーからすぐに見えます。

ほかにも、システム情報を見たり、管理ツールとしても使えます。


2012年8月12日日曜日

[Xperia SX] スクリーンショットを撮る

Android 4.0から標準でスクリーンショットに対応したようだ。

 [電源]と[音量下げる]のボタンを2秒以上押すと撮れます。

 ※カメラ同様、マナーにしててもシャッター音が出ます!

ブラウザやアプリ画面等、メモするのに便利ですね。

[Xperia SX] Mac OSからUSBケーブルでMicro SD中のデータを見る

今月、Xperia SXが発売されて、さっそく購入しました。
困ったことがあったのでメモします。

MacとXperiaをUSBケーブルでつないでも、Xperiaの中のMicro SDが認識されません。
どうやら、転送モードの設定がメディア転送モード(MTP)になってて、Micro SDをディスクとして認識させない設定になってました。

メディア転送モードって、Windows向けのMedia GO用のモードなんでしょうか?
とりあず、ファイル転送モードに変えたら、Micro SDがディスクとして認識されました。

以下、設定変更手順。
1.設定画面を開いて、[Xperia]を選択する。

2.[接続設定]を選択する。

 3.USB接続モードを選択する。
 ※USBケーブルは外さないと選べないよ。

4.[ファイル転送モード(MSC)]を選択する。

5.注意書きが表示されますが、[OK]を選択する。

 おわり。