`

2013.07.05——— android LocalSocket

 
阅读更多
2013.07.05——— android LocalSocket
参考:http://www.cnblogs.com/bastard/archive/2012/10/09/2717052.html
http://www.cnblogs.com/over140/archive/2011/11/22/2258372.html

package com.example.testlocalsocket;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.net.LocalServerSocket;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	 public static String SOCKET_ADDRESS = "123456Video";
	    
	    private final Handler handler = new Handler();
	    
	    public class NotificationRunnable implements Runnable {
	        private String message = null;
	        
	        public void run() {
	            if (message != null && message.length() > 0) {
	                showNotification(message);
	            }
	        }
	        
	        /**
	        * @param message the message to set
	        */
	        public void setMessage(String message) {
	            this.message = message;
	        }
	    }
	    
	    // post this to the Handler when the background thread notifies
	    private final NotificationRunnable notificationRunnable = new NotificationRunnable();
	    
	    public void showNotification(String message) {
	        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
	    }
	    
	    class SocketListener extends Thread {
	        private Handler handler = null;
	        private NotificationRunnable runnable = null;
	        
	        public SocketListener(Handler handler, NotificationRunnable runnable) {
	            this.handler = handler;
	            this.runnable = runnable;
	            this.handler.post(this.runnable);
	        }
	        
	        /**
	        * Show UI notification.
	        * @param message
	        */
	        private void showMessage(String message) {
	            this.runnable.setMessage(message);
	            this.handler.post(this.runnable);
	        }
	        
	        @Override
	        public void run() {
	            //showMessage("DEMO: SocketListener started!");
	            try {
	                LocalServerSocket server = new LocalServerSocket(SOCKET_ADDRESS);
	                while (true) {
	                    LocalSocket receiver = server.accept();
	                    if (receiver != null) {
	                        InputStream input = receiver.getInputStream();
	                        
	                        // simply for java.util.ArrayList
	                        int readed = input.read();
	                        int size = 0;
	                        int capacity = 0;
	                        byte[] bytes = new byte[capacity];
	                        
	                        // reading
	                        while (readed != -1) {
	                            // java.util.ArrayList.Add(E e);
	                            capacity = (capacity * 3)/2 + 1;
	                            //bytes = Arrays.copyOf(bytes, capacity);
	                            byte[] copy = new byte[capacity];
	                            System.arraycopy(bytes, 0, copy, 0, bytes.length);
	                            bytes = copy;
	                            bytes[size++] = (byte)readed;
	                            
	                            // read next byte
	                            readed = input.read();
	                        }
	                        
	                        showMessage(new String(bytes, 0, size));
	                    }
	                }
	            } catch (IOException e) {
	                Log.e(getClass().getName(), e.getMessage());
	            }
	        }
	    }
	    
	    public static void writeSocket(String message) throws IOException {
	        LocalSocket sender = new LocalSocket();
	        sender.connect(new LocalSocketAddress(SOCKET_ADDRESS));
	        sender.getOutputStream().write(message.getBytes());
	        sender.getOutputStream().close();
	    }
	    
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main);
	        
	        new SocketListener(this.handler, this.notificationRunnable).start();
	        
	        Button send1 = (Button)findViewById(R.id.send);
	        send1.setOnClickListener(new OnClickListener() {
	            
	            @Override
	            public void onClick(View v) {
	                try {
	                    writeSocket("hello");
	                } catch (IOException e) {
	                    Log.e(getClass().getName(), e.getMessage());
	                }
	            }
	            
	       });
	    }

}




分享到:
评论

相关推荐

    socket_test.zip_android_android LocalSocket_socket

    在某些特定场景下,如设备内部组件间的通信或同一设备上的应用间通信,使用常规的网络套接字(Socket)可能并不合适,这时Android提供了LocalSocket(本地套接字)作为解决方案。`socket_test.zip`包含了针对Android...

    Android利用LocalSocket实现Java端进程与C端进程之间的IPC.doc

    Android利用LocalSocket实现Java端进程与C端进程之间的IPC

    android_net_LocalSocketImpl.rar_android

    在Android系统中,`LocalSocketImpl` 是 `LocalSocket` 类的一个内部实现,用于处理本地域(即在同一设备上)进程间通信(IPC)。这种通信方式通常比基于网络的套接字更快、更安全,因为它不需要网络协议栈。 `...

    Android MediaRecorder 录制视频 socket发送

    在Android平台上,MediaRecorder是一个非常重要的类,用于处理多媒体数据的录制,如音频和视频。在本场景中,我们关注的是如何使用MediaRecorder录制视频并将其通过Socket发送到其他设备或服务器。以下是对这一主题...

    Android 音视频录制

    LocalSocket(也称作套接字对)是Android中进程间通信的一种方式。在音视频录制场景下,通过LocalSocket将录制的音视频流实时传输到服务端,可以实现流媒体录制。具体步骤如下: 1. 创建LocalServerSocket和...

    基于Android4.2系统的H.264视频数据的获取.pdf

    摘要中提到的问题是,在Android系统中,通常使用MediaRecorder和LocalSocket类来从MPEG4文件中提取H.264原始数据。然而,这种方法存在两个主要缺陷:一是需要手动填充SPS(Sequence Parameter Set)和PPS(Picture ...

    C++与android通过socket通信(上个版本端口弄错了,这个可以运行)

    C++编写的服务器端跟android上编写的手机客户端进行socket通信,传动多种数据。用VC6.0直接打开C++ Server,用eclipse直接打开android socketTest。注意修改一下安卓代码中的IP地址。程序中java和C++的通信的内容...

    Android实时视频采集编码传输解码播放的方案调研.pdf

    2. **通过Android的MediaRecorder,在SetoutputFile函数中绑定LocalSocket实现**: - **原理**:利用`MediaRecorder`的输出功能,将其输出绑定到`LocalSocket`上,这样可以通过Socket实时传输视频流。 - **优点**...

    QT使用localsocket通信

    QT库是跨平台的C++应用开发框架,广泛用于创建桌面和移动应用程序。在QT中,`QLocalSocket`是一个非常实用的类,用于实现本地(在同一台机器上)进程间的通信。`QLocalSocket`提供了基于命名管道的通信机制,这种...

    Android的APN开发源码分析

    1. **LocalSocket的创建**:RIL层通过LocalSocket与上层应用通信,该Socket的名称为“rild”。其创建过程是在ril.cpp文件中实现的,使用`android_get_control_socket(SOCKET_NAME_RIL)`获取。 2. **RILD的工作流程*...

    Android采用MediaRecorder进行录音和播放的源码

    在Android平台上,MediaRecorder是一个非常重要的类,它用于处理多媒体数据的录制,涵盖了音频、视频以及图像等。本文将深入探讨如何使用MediaRecorder进行录音和播放操作,通过源码解析来帮助开发者理解其实现原理...

    android APN开发流程

    RIL层是Android系统中与硬件通信的重要桥梁,它通过LocalSocket与上层应用交互。在RIL层,消息处理的关键在于将消息通过名为`rild`的有名端口发送。这一端口的创建实现在`ril.cpp`文件中,通过`android_get_control_...

    android Socket通信方法与思路

    此外,Android提供了`LocalSocket`和`LocalServerSocket`用于设备内部的进程间通信(IPC),这与传统的Socket通信有所不同,适用于不涉及网络的数据交换。 总结来说,Android中的Socket通信涉及到网络编程的基础...

    android实时监控

    在Android平台上实现实时监控涉及到多个关键技术环节,包括视频采集、编码、传输、解码和播放。下面我们将逐一探讨这些步骤。 一、实时监控系统概述 Android实时监控系统主要是利用手机的摄像头进行视频采集,通过...

    AndroidAPN开发流程分析.pdf

    在Android系统中,APN(Access Point Name)是设置数据连接的关键,用于定义手机如何连接到互联网。本文将深入分析Android APN的开发流程,特别是数据连接的建立过程。 首先,Android的数据连接基于PPP(Point-to-...

    LocalServerSocket

    在Java编程环境中,`LocalServerSocket`和`LocalSocket`是用于本地进程间通信(IPC,Inter-Process Communication)的类,主要适用于在同一台计算机上运行的多个Java应用程序之间的通信。这两个类是Java套接字API的...

    此应用程序提供通过 USB 或TCP/IP连接的 Android 设备的显示和控制。它不需要任何根访问权限。它适用于GNU/Li

    1,开启 LocalSocket 和PC连接。 相应 PC 端传递过来的操作。 2,源源不断的将屏幕画面输出到PC,使用Mediacodec 编码。 PC 通过ffmpeg 解码播放。 3,使用 adb 来提高 scrcpy-server.jar 的运行权限

    MediaRecorder获取H264数据

    `LocalSocket` 是Android提供的一种本地进程间通信(IPC)机制,用于在同一台设备上的不同应用之间进行通信。在获取H264数据时,我们可能不希望直接将数据写入文件,而是通过 `LocalSocket` 实现数据传输,这样可以...

    开源-Hardcoder-安卓APP与系统间通信解决方案.docx

    Hardcoder 是一个开源的安卓应用程序与系统间通信框架,它旨在突破传统 Android 应用只能通过系统标准 API 调用资源的限制,允许APP直接调度系统底层硬件资源,如CPU频率、GPU频率等,以实现更高效能的优化。...

Global site tag (gtag.js) - Google Analytics