mrhuangcc 2013-12-24 14:56 采纳率: 100%
浏览 1937
已采纳

小弟第一次编android程序,有关socket,但是就是看不出来哪有问题

package com.example.warningsystem;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.media.MediaPlayer;

public class MainActivity extends Activity implements Runnable {

private static final String Host="host";
private static final int Port = 9999;
private String msg = null; 
private Thread thread = null;
private String br_in;
BufferedReader br;
MediaPlayer  audioPlayer;
ImageView    myView;
Button       stopBtn;
boolean      isPlaying = false;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    try
    {
        Socket socket = new Socket (Host,Port);

        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        msg = br.readLine();

        if(msg != null)
        {
            play();
        }
        else{
            msg = br_in;
            if(msg != null )
            {
                play();
            }
        }

    }catch(IOException e)
    {
        e.printStackTrace();
    }
    thread.start();



    stopBtn= (Button)    findViewById(R.id.button2);
    stopBtn.setOnClickListener(new View.OnClickListener()
    {

        @Override
        public void onClick(View arg0) 
        {
            stop();
            myView.setImageResource(0);
        }
    });
}






public void play()
{
    myView  = (ImageView) findViewById(R.id.p1);

    if (audioPlayer == null)
        audioPlayer = new MediaPlayer();
    String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/warning.mp3";
    try{
        audioPlayer.setDataSource(path);
        audioPlayer.prepare();
        audioPlayer.start();

    }
    catch (IllegalArgumentException e){

        e.printStackTrace();

    }
    catch (IllegalStateException e){

        e.printStackTrace();
    }
    catch (IOException e){
        e.printStackTrace();
    }
    isPlaying = true;
}

public void again()
{
    if(stopBtn != null)
    {
        play();
    }
}

public void stop()
{
    if(audioPlayer != null)
    {
        audioPlayer.stop();
        audioPlayer.release();
        audioPlayer = null;

    }

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}






@Override
public void run() {
    // TODO Auto-generated method stub
    while(true)
    {
        try{
            br_in = br.readLine();
        }

    catch (Exception e) {  
        e.printStackTrace();  
    }  

}

}
}

  • 写回答

1条回答

  • qq983742902 2013-12-31 07:22
    关注

    Socket socket = new Socket (Host,Port);

        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        msg = br.readLine();
    

    这部分属于网络连接,不能放在主线程里操作,要新开线程结合Handler、Message来做

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)