2012-04-05 31 views
0

ログイン画面の直後にGoogleマップを表示するアプリケーションを作成しています。 ビルドターゲットは2.3に設定されていると、私のデバイスが実行します。私のAndroidアプリケーションは2台のデバイスでは動作しませんが、エミュレータでは動作します

1)三星銀河エース(2.3.4) 2)Motorolla Xoomの(3.1)

私は、Androidエミュレータ上で私のアプリを試してみて、それが実行されます良い。ログインと地図の表示。

コンピュータでUSB経由で両方のデバイスを接続し、アプリケーションを実行するように選択したとき(メモ:選択時にビルドターゲットの横にオレンジ色の警告記号があります)、ログイン画面はうまく表示され、サインイン "アプリケーションは、Motorollaでクラッシュし、しばらくの間、フリーズし、私のギャラクシーエースで何もしません。

インターネットに接続できることに注意してください。デバイスのための

Logcat USB接続経由でアプリケーションを実行中:

1)三星銀河エース

04-06 00:24:21.599: I/InputReader(162): dispatchTouch::touch event's action is 0 
04-06 00:24:21.599: I/InputDispatcher(162): Delivering touch to current input target: action: 0, channel '40796920 com.cylbs.android/com.cylbs.android.MainActivity (server)' 
04-06 00:24:21.699: I/InputReader(162): dispatchTouch::touch event's action is 1 
04-06 00:24:21.699: I/InputDispatcher(162): Delivering touch to current input target: action: 1, channel '40796920 com.cylbs.android/com.cylbs.android.MainActivity (server)' 
04-06 00:24:27.709: W/PowerManagerService(162): Timer 0x3->0x3|0x1 
04-06 00:24:28.559: D/BatteryService(162): update start 
04-06 00:24:28.569: D/BatteryService(162): update start 
04-06 00:24:28.579: D/BatteryService(162): update start 

2)Motorolla Xoomの

04-06 00:27:13.490: D/AndroidRuntime(3163): Shutting down VM 
04-06 00:27:13.490: W/dalvikvm(3163): threadid=1: thread exiting with uncaught exception (group=0x40154760) 
04-06 00:27:13.510: E/AndroidRuntime(3163): FATAL EXCEPTION: main 
04-06 00:27:13.510: E/AndroidRuntime(3163): android.os.NetworkOnMainThreadException 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:368) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:208) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:431) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.net.Socket.connect(Socket.java:901) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:304) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:292) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:274) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:217) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:624) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.cylbs.android.MainActivity.tryLogin(MainActivity.java:65) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.cylbs.android.MainActivity$1.onClick(MainActivity.java:41) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.view.View.performClick(View.java:3110) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.view.View$PerformClick.run(View.java:11928) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Handler.handleCallback(Handler.java:587) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.os.Looper.loop(Looper.java:132) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at android.app.ActivityThread.main(ActivityThread.java:4025) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at java.lang.reflect.Method.invoke(Method.java:491) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
04-06 00:27:13.510: E/AndroidRuntime(3163):  at dalvik.system.NativeStart.main(Native Method) 

これはMainActivityのために私のコードですこれはログインのみで、地図が表示されるホームアクティビティ:

MainActivity:

package com.cylbs.android; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.URL; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    private Button login; 
    private EditText username, password; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     login = (Button) findViewById(R.id.logIn); 
     username = (EditText) findViewById(R.id.username); 
     password = (EditText) findViewById(R.id.password); 


     login.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String mUsername = username.getText().toString(); 
       String mPassword = password.getText().toString(); 

       tryLogin(mUsername, mPassword); 

      } 
     }); 
    } 

    public boolean tryLogin(String mUsername, String mPassword) 
    {   
     HttpURLConnection connection; 
     OutputStreamWriter request = null; 

      URL url = null; 
      String response = null;   
      String parameters = "username="+mUsername+"&password="+mPassword; 
      final TextView result = (TextView) findViewById(R.id.result); 

      try 
      { 
       url = new URL("http://10.0.2.2/database_test/index.php"); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setDoOutput(true); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setRequestMethod("POST");  

       request = new OutputStreamWriter(connection.getOutputStream()); 
       request.write(parameters); 
       request.flush(); 
       request.close();    
       String line = "";    
       InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
       BufferedReader reader = new BufferedReader(isr); 
       StringBuilder sb = new StringBuilder(); 
       while ((line = reader.readLine()) != null) 
       { 
        sb.append(line); 
       } 
       // Response from server after login process will be stored in response variable.     
       response = sb.toString(); 
       // You can perform UI operations here 
       Toast.makeText(this,"."+ response +".", 0).show();   


       if (response.equals("Success")) 
       { 
        Session obj = new Session(); 
        obj.setUsername(mUsername); 

        Intent myIntent = new Intent(MainActivity.this, Home.class); 
        startActivity(myIntent); 
        result.setText("Login successful"); 
       } 
       else 
       { 
        result.setText("Login fail. Please try again"); 
       } 
       isr.close(); 
       reader.close(); 
      } 
      catch(IOException e) 
      { 
       // Error 
      } 
      return true; 
    } 

} 

と家庭の活動(拡張MapActivity)

package com.cylbs.android; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class Home extends MapActivity { 

    MapController mControl; 
    GeoPoint geoP; 
    MapView mapV; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 

     mapV = (MapView) findViewById(R.id.mapView); 
     mapV.displayZoomControls(true); 
     mapV.setBuiltInZoomControls(true); 

     double lat = 40.8; 
     double longi = -96.666; 

     geoP = new GeoPoint((int) (lat *1E6), (int) (longi *1E6)); 

     mControl = mapV.getController(); 
     mControl.animateTo(geoP); 
     mControl.setZoom(13); 


     Button emergencies = (Button) findViewById(R.id.emergencyButton); 
     emergencies.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent myIntent = new Intent(Home.this, EmergencyList.class); 
       Home.this.startActivity(myIntent); 
      } 
     }); 
     Button disruptions = (Button) findViewById(R.id.disruptionButton); 
     disruptions.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent myIntent2 = new Intent(Home.this, DisruptionList.class); 
       startActivity(myIntent2); 
      } 
     }); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 

任意のアイデア?思考? これは今のところすべてです。 ありがとうございます。

P.S. 私は新しいアンドロイドの開発者です。

+0

オレンジ色の警告記号は何を意味しましたか? Logcatがクラッシュしたときのエラーは何でしたか?エースで何も「何もしない」という意味ですか?正確に何を意味するかわかりません。他の実際のデバイスでも動作しますか? –

+0

いくつかの携帯電話の横に黄色の警告アイコンがあり、すべてのアプリでうまく動作するので、問題ではないと思います。 – JeffS

答えて

1

他の誰かが同じ問題を抱えている場合は、解決策を見つけたと思います。

私はLogCatでエラー見上げ:

04-06 00:27:13.510: E/AndroidRuntime(3163): android.os.NetworkOnMainThreadException 

をそしてこのhttp://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

によると、いくつかの(新しい)アンドロイドのバージョンはMainActivityか何かのようなインターネット接続要求を許可していないようですそれ。

アンドロイドバージョン10(2.3)をターゲットにしていましたが、まだエラーがありましたので、私のプロジェクトターゲットをバージョン8に変更しました。今は大丈夫です。

1

私は、アプリをエミュレートするための別のMaps API KEYと、デバイスでアプリを実行するためのMD5シグネチャで署名された別のものを前提としています。それをチェックしてくださいhere

+0

+1これは、通常、地図のアクティビティは空白のグリッドのように見えますが、これは始めるのに適しています – HoratioCain

+0

@ペラーン 私はあなたが何を意味しているのか分かりません。エミュレータ上で同じコードを実行している同じアプリケーションであり、両方のデバイスで同じものが実行されているためです... Maps APIのキーを初めて生成したときには、灰色のグリッドが表示されていました。デバイスではまだ実行されません)。 次に、YouTubeでCornBoyzAndroidチュートリアルを見ました。私のマップがエミュレータに完全に読み込まれるようにするデバッグ用のMaps APIキーを作成しましたが、まだデバイスでは動作しません。 – bubbly

+0

@RobLourens オレンジの看板はこれです: http://i44.tinypic.com/e9hk07.png エースに私が(マップ前ステップ)サインインをクリックすると、それだけで、その後に応答せず、それは応答しますが、私は何かを押していないかのようです。私がもう一度それを押すと、再び起こります。 「強制終了」メッセージがポップアップ表示されません。 Motorollaはやってますが... エースはLogCatでエラーを放棄します... Motorollaはいくつかを提供しますが、私は実際にそれらを理解しません。私はそれらを2つの異なる.txtファイルに保存しました。下にダウンロードしてください。 http://www.mediafire.com/?plmhhk9f3p4vflk – bubbly

関連する問題