0

アプリに httpd サーバーが必要なので、NanoHttpd を選択しました。

私は自分のサーバーをサブクラス化しました:

public class StreamingServer extends NanoHTTPD {
    private Context mContext;
    public StreamingServer(Context context) {
        super(8080);
        mContext = context;
        Log.i("MyServer", "Streaming server created");
    } 

そして、メインアクティビティでサーバーを起動しようとしています:

       // onCreate:
       server = new StreamingServer(getApplicationContext());

これが私のonResumeメソッドです:

        // onResume:
        super.onResume();
        try {
            server.start();
        } catch (IOException e) {
            Log.i(TAG, "exception!");
            e.printStackTrace();
        }
        Log.i(TAG, "started!");

および onPause:

        super.onPause();
        if (server != null) {
             server.stop();
             Log.i(TAG, "stopped!");
        }

私も適切なセットアップを行いました:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

だから私はすべてを正しくやったと信じています。しかし、私のアプリを起動しても何も起こりません (ページは利用できません)。2 つまたは 3 つの起動がサーバーの起動につながる方法もあります (その時点で私は何も変わりません)。

私が間違っていることは何ですか?

4

1 に答える 1

1

NanoHttpd は、"serve()" メソッドをオーバーライドすることを想定しています。オーバーライドされたメソッドから返される応答オブジェクトは、サーバーにアクセスした Web ブラウザーに返されます。github サイトの「README」ドキュメントには、ブラウザにデバッグ情報を返す完全に機能する例 ( https://github.com/NanoHttpd/nanohttpd ) があります。

もっと興味深いコンテンツを提供したい場合は、NanoHttpd プロジェクト内の samples/ フォルダー、または完全に機能する Web サーバーの webserver/ フォルダーを見てください。

于 2013-12-13T02:09:03.383 に答える