`
ydbc
  • 浏览: 719105 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

android编程4:多线程编程

 
阅读更多

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

功能与编程3中一样,当按下键后,发送文本框中数据给PC。不同的是把发送数据的功能放在一个线程socket_send中。

环境:win7 + eclipse + ndk

代码:

主类test_socket.java

package test.soket;

//import com.test_button.R;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class test_socket extends Activity {
	public static TextView show;
	public static Button press;
	public static boolean flag;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //开辟控件空间
        show = (TextView)findViewById(R.id.editText1);
        press = (Button)findViewById(R.id.button1);
        flag = false;
        soket_send thread = new soket_send();
        thread.init();
        thread.start();
	       
        press.setOnClickListener(new Button.OnClickListener()
        {
        	@Override
        	public void onClick(View v)
        	{
        		flag = true;
        	}
        });
    }
}

线程类socke_sendt.java:

package test.soket;

import java.io.DataOutputStream;  
import java.io.IOException;  
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;  
import java.net.SocketException;
import java.net.UnknownHostException;  
import java.util.LinkedList;  
  
import android.media.AudioFormat;  
import android.media.AudioRecord;  
import android.media.MediaRecorder;  
import android.util.Log;   

public class soket_send extends Thread
{ 
	private static final int MAX_DATA_PACKET_LENGTH = 40;
    private byte[] buffer = new byte[MAX_DATA_PACKET_LENGTH];
    private DatagramPacket dataPacket;
    private DatagramSocket udpSocket; 
    
    public void init()  
	{  
    	try
        {
        	udpSocket = new DatagramSocket(5554);
        }
        catch (SocketException e)
        {
        	// TODO Auto-generated catch block
        	e.printStackTrace();
        }
        dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH);
        String str = "hello,jdh";  //这是要传输的数据
		byte out [] = str.getBytes();  //把传输内容分解成字节
        dataPacket.setData(out);
        dataPacket.setLength(out.length);
        dataPacket.setPort(5554);
        
        try
        {
                
        	InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248");
        	dataPacket.setAddress(broadcastAddr);
        	udpSocket.send(dataPacket);
        }
        catch (IOException e)
        {
        	// TODO Auto-generated catch block
        	e.printStackTrace();
        }	  
	}  
    
    public void run() 
    {  
    	while (true)
    	{
    		if (test_socket.flag)
    		{
		    	//获得输入框文本
				CharSequence str =test_socket.show.getText();
		        byte out[] = str.toString().getBytes();
		        dataPacket.setData(out);
		        dataPacket.setLength(out.length);
		        try
		        {
		                
		        	InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248");
		        	dataPacket.setAddress(broadcastAddr);
		        	udpSocket.send(dataPacket);
		        }
		        catch (IOException e)
		        {
		        	// TODO Auto-generated catch block
		        	e.printStackTrace();
		        }
		        
		        test_socket.flag = false;
    		}
    	}
    }  
}


注意:程序中采用的线程间通信的方法是把需要共享的变量设置成public属性


分享到:
评论

相关推荐

    Android开发中的多线程编程技术

    Android开发中的多线程编程技术资源包 TAG:Android 多线程 应用开发 Alfred整理发布,版权所有!

    Android多线程编程方法及开启步骤

    本文章介绍Android多线程编程方法及开启步骤。

    Android C++高级编程: 使用NDK

     用POSIX和Java线程开发多线程原生应用。  用POSIXsockets开发网络原生应用。  用logging、GDB和Eclipse调试器调试原生代码。  用Valgrind分析内存问题。  用GProf测试应用性能。  用SIMD/NEON优化原生代码。

    android编程之多线程编程实例分析

    本文实例讲述了android编程之多线程编程实现方法。分享给大家供大家参考。具体分析如下: 该功能与前面《android开发socket编程之udp发送实例分析》中一样,当按下键后,发送文本框中数据给PC。不同的是把发送数据的...

    Android JNI多线程编程回调JAVA函数

    通过JNI接口静态注册的native方法去创建线程,同时提供native回调Java的方法。通过这个框架可以去实现线程监听某一个状态,然后回调Java的方法(如发消息去通知顶层,实现显示)

    《Android C++高级编程——使用NDK》_源码.zip

    主要内容:● 使用JNI将原生代码连接到Java中● 使用SWIG自动生成JNI代码● 使用POSIX线程实现多线程应用● 使用POSIX套接字实现网络应用● 使用logging、GDB和Eclipse调试器进行调试● 使用Valgrind分析内存● 使用...

    Android与PC机 Socket 多线程通信经典案例,移动开发必备代码

    Android与PC机 Socket 多线程通信,测试没问题,移动开发必备代码

    Android多线程下载文件实例

    Android多线程下载文件实例 Android多线程下载文件实例

    Android网络编程 非常适合入门

    Android网路编程代码 设计客户端和服务器端通信 适合初学者学习 当然其中包括很多其他知识点 例如基于handler的主副线程通信机制 多线程应用等 另外 对于Android入门的学习者 也是一手极好的学习资料 下载即可运行 ...

    Android多线程下载(二)

    Android多线程下载,移植了上一次java编程中的代码。。。

    java多线程编程_java多线程_

    1.讲解了Java多线程的基础, 包括Thread类的核心API的使用。2.讲解了在多线程中对并发访问的控制, 主要就是synchronized的使用, 由于此关键字在使用上非常灵活, 所以书中用了很多案例来介绍此关键字的使用, 为...

    老罗android视频多线程编程源码

    1、自己看视频写了下多线程编程的源码,网上没有找到,写的和视频上不是很一样。2、视频最后一个项目没有使用数据库来做,具体代码可以看下jsonProject项目中的action 的写法。 3、其中有一个项目需要引入appcompat_...

    Android 中三种启用线程的方法总结

    在多线程编程这块,我们经常要使用Handler(处理),Thread(线程)和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢? 首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而...

    安卓开发之Android多线程编程.md

    安卓开发之Android多线程编程.md

    android多线程高效编程

    从Linux基础的线程和进程知识讲起,主要介绍了Android平台上的各种异步机制,并且详细分析了各种线程技术的优缺点。覆盖了技术背后的原理,也展示了技术实现为代码的方法...

    Flutter编程指南-多线程

    Flutter是Google开发的新一代跨平台方案,Flutter可以实现写一份代码同时运行在iOS和Android设备上,并且提供很好的性能体验。 在Google刚推出Flutter时,其发展很缓慢,终于在18年发布第一个Bate版之后迎来了爆发...

    Android编程开发实现多线程断点续传下载器实例

    本文实例讲述了Android编程开发实现多线程断点续传下载器。分享给大家供大家参考,具体如下: 使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个...

    android客户端多线程下载案例(实现断点续传,包括客户端服务端,还有注释)

    android客户端多线程下载,断点续传,多线程下载,网络编程详解代码 网络搜索《Android 4.0 网络编程详解代码》中的 第5章:Android中的网络数据下载及JSON的操作 中代码不全,少了个终于的activity,现自己跑通后上传以...

Global site tag (gtag.js) - Google Analytics