0

私は Android 開発に非常に慣れていないので、これが簡単に答えられることを願っています。私は多くの検索を行いましたが、答えを見つけることができません - おそらく私は間違った方法でそれを行っています.

2 つのクラス ファイルがあります。1 つはバッテリ レベル情報を取得するためのもの (以下のクラス A) で、もう 1 つは TelephonyManager を使用してデバイスの IMEI を取得し、それを表示するためのもの (以下のクラス B) です。

これら 2 つのクラスの値を同じレイアウトに表示する方法がわかりません。

これはクラス A です。

package com.XXXXXX.XXXXXX;

import android.app.ListActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;



public class AboutScreen extends ListActivity {  
/** Called when the activity is first created. */  

private String[] strText = new String[] {"Battery Level", "Voltage", "Status"};  
  private int voltage = 0;  
  private boolean trun = true;  
  private Handler myHandler = new Handler();  
  private Runnable myRun = new Runnable() {  
       public void run() {  
            updateNow();  
       }  
  };  
  // using Thread to keep the process running  
  private Thread myThread = new Thread() {  
       public void run () {  
            do {  
              batteryLevelUpdate();  
              myHandler.post(myRun);  
              try {  
                      Thread.sleep(1000);  
                 } catch (InterruptedException e) {  
                      // TODO Auto-generated catch block  
                      e.printStackTrace();  
                 }                   
            } while (trun);  
       }  
  };  
@Override  
public void onCreate(Bundle savedInstanceState) {  
 super.onCreate(savedInstanceState);  
 Toast.makeText(getApplicationContext(), "email", 2000).show();  
 startMonitor();  
}  
@Override  
public void onDestroy() {  
    trun = false;  
    super.onDestroy();  
}  

private void startMonitor() {  
    myThread.start();  
}  
private void updateNow() {  
    ListView thisListView = getListView();  
    thisListView.setEnabled(false);  
    ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.about_screen, strText);  
    thisListView.setAdapter(myList);  
}  
private void batteryLevelUpdate() {  
 BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {  
   public void onReceive(Context context, Intent intent) {  
        context.unregisterReceiver(this);  
     int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);  
     int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);  
     int level = -1;  
     if (rawlevel >= 0 && scale > 0) {  
       level = (rawlevel * 100) / scale;  
     }  
     voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);  
     int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);  
     int onplug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);  
     boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;  
     boolean onUSB = onplug == BatteryManager.BATTERY_PLUGGED_USB;  
     boolean onAC = onplug == BatteryManager.BATTERY_PLUGGED_AC;  
     String strStatus = "Charging on ";  
     if (isCharging && onUSB)  
          strStatus += "USB";  
     else if (isCharging && onAC)  
          strStatus += "AC Power";  
     else  
          strStatus = "Battery Discharging";          



     strText[0] = "Battery Level: " + Integer.toString(level) + "%";  
     strText[1] = "Voltage: " + Integer.toString(voltage) + "mV";  
     strText[2] = strStatus;  
     //strText[3] = "test";
   }  
 };  
 IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);  
 registerReceiver(batteryLevelReceiver, batteryLevelFilter);  
}  
}  

これはクラス B です。

package com.XXXXXX.XXXXXX;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;

public class AndroidTelephonyManager extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.phone);
    TextView textDeviceID = (TextView)findViewById(R.id.deviceid);

    //retrieve a reference to an instance of TelephonyManager
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

    textDeviceID.setText(getDeviceID(telephonyManager));

}

String getDeviceID(TelephonyManager phonyManager){

 String id = phonyManager.getDeviceId();
 if (id == null){
  id = "not available";
 }

 int phoneType = phonyManager.getPhoneType();
 switch(phoneType){
 case TelephonyManager.PHONE_TYPE_NONE:
  return "NONE: " + id;

 case TelephonyManager.PHONE_TYPE_GSM:
  return "GSM: IMEI=" + id;

 case TelephonyManager.PHONE_TYPE_CDMA:
  return "CDMA: MEID/ESN=" + id;

 /*
  *  for API Level 11 or above
  *  case TelephonyManager.PHONE_TYPE_SIP:
  *   return "SIP";
  */

 default:
  return "UNKNOWN: ID=" + id;
 }

}
}

これは、バッテリー レベル情報を適切に表示するレイアウト ファイルです。

<?xml version="1.0" encoding="utf-8"?>  
 <TextView  
     xmlns:android="http://schemas.android.com/apk/res/android"  
     android:layout_width="fill_parent"  
     android:layout_height="fill_parent"  
     android:padding="10dp"  
             android:textSize="12sp"   
             android:clickable="false" /> 

ただし、クラス B から IMEI 情報を取得して表示する方法もわかりません。理想的には、バッテリー レベル項目の下に別のリスト行が表示されます。さまざまなアクティビティを 1 つのレイアウトに組み合わせる方法についてのアドバイスは、非常に役に立ちます。

私の説明が良くない場合は申し訳ありませんが、現時点では私の Java の理解は初心者です。

どうもありがとう

4

3 に答える 3

0

たとえば、静的メソッドを使用します

static String getDeviceID(TelephonyManager phonyManager)

次に、クラス名でメソッドを呼び出し、

classB.getDeviceID(phonyManager);

于 2013-03-28T14:34:59.490 に答える
0

ここで基本的な概念が間違っている可能性があると思います。ActivityUI専用です。Activity1 つの特定の機能に 1 つ必要である必要はありません。そのため、1 つのアクティビティで両方の機能を使用し、そのレイアウトを更新できます。

于 2013-03-28T14:48:25.013 に答える
0

これらの値を Sharedpreferences.... に書き込むことができます。

getSharedPreferences("sp", MODE_PRIVATE). edit(). putString("login", ed_login.getText().toString()). commit();

それで、あなたはどこでもそれを手に入れることができます...

getSharedPreferences("sp", MODE_PRIVATE).getString("login", "");
于 2013-03-28T15:19:51.683 に答える