2011年2月24日木曜日

DoCoMo Galaxy Tab Wifi Tethering & USB Tethering

DoCoMo版Galaxy Tabの隠されたテザリング インターフェースを呼び出す方法。
まず、簡単にテストしてみる。rootは必要なし。amコマンドでインテントを直接投げてみる。
adb shell
am start -a android.intent.action.MAIN -n com.android.settings/.TetherSettings
am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiApSettings
前者はUSBテザリングのUIを呼び出す。後者はWIFIテザリングのUIを呼び出す。インテントを直接投げます。WIFIの設定UIから消えているだけで、実際はこのように存在するわけですね。WIFIしかためしていませんが、普通にテザリングできました。

アプリで書くならこんな感じ。

package com.hogehoge.gtether;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class GTether extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btnUSB = (Button)findViewById(R.id.Button01);
        Button btnWIFI = (Button)findViewById(R.id.Button02);
        btnUSB.setText("USB Tethering Mode");
        btnWIFI.setText("Wifi AP Tethering Mode");
        
        btnUSB.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MAIN);
                ComponentName com = new ComponentName("com.android.settings",
                                       "com.android.settings.TetherSettings");
                intent.setComponent(com);
                startActivity(intent);
            }
        });
        btnWIFI.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MAIN);
                ComponentName com = new ComponentName("com.android.settings",
                                       "com.android.settings.wifi.WifiApSettings");
                intent.setComponent(com);
                startActivity(intent);
            }
        });
    }
}

UIはボタン2個だけなのでeclipseならエディタでボタンを2つドロップしたらおしまい。Androidはこう言うのがたくさんあって面白い。ちなみにamコマンドで、
am start -a com.android.intent.action.MAIN
とだけ入力してみると。いろいろ出てくるので楽しめます。不具合でても責任とれないので、自己責任でよろしく。

0 コメント:

コメントを投稿