最近在有涉及到Android连接网络打印机,看了下国内很少有相关的资料。所以,就给出自己弄出来的一个DEMO。主要还是通过Socket连接。这里就不废话了,直接贴上代码已经有注释.

package com.example.send2print;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Context;
import android.content.pm.FeatureInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.text.TextUtilsCompat;
import android.text.Html;
import android.text.TextUtils;
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 Socket client;
private FileInputStream fileInputStream;
private BufferedInputStream bufferedInputStream;
private OutputStream outputStream;
private Button button;
private TextView text;
private EditText etIp, etPort;
int port=0;
private  String serNo = "201409098833";
private  String orderNo = "A005";
private  String CardNo = "00000356";
private  String patType = "会员卡";
private  String Amount = "300.00";
private  String state = "支付完成";
private  String time = "2014-09-09";

private final int NOFOUNDPRINTER = 0;
private final int PRINETNOPAGER = 1;
private final int CLIENTTIMEOUT = 2;
private boolean isNetWork;

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

button = (Button) findViewById(R.id.button1);   //reference to the send button
text = (TextView) findViewById(R.id.textView1);   //reference to the text view
etIp = (EditText) findViewById(R.id.editText1);
etPort = (EditText) findViewById(R.id.editText2);

//打印设备网络IP
etIp.setText("192.168.2.249");
//打印设备端口号  一般为9100
etPort.setText("9100");
isNetWork = IsNetWork(this);
//Button press event listener
button.setOnClickListener(new View.OnClickListener() {

private File file;

public void onClick(View v) {

if(isNetWork){
//create file instance
port=Integer.parseInt(etPort.getText().toString());
file = new File("/mnt/sdcard/de_urgent_file.txt");

new Thread(){
@Override
public void run() {
super.run();
try 
{
// client.connect(remoteAddr, timeout)

client = new Socket(etIp.getText().toString(), port);

//       byte[] mybytearray = new byte[(int) file.length()]; //create a byte array to file
//
//       fileInputStream = new FileInputStream(file);
//       bufferedInputStream = new BufferedInputStream(fileInputStream);  
//
//       bufferedInputStream.read(mybytearray, 0, mybytearray.length); //read the file
//
//       outputStream = client.getOutputStream();
//
//       outputStream.write(mybytearray, 0, mybytearray.length); //write file to the output stream byte by byte
//       outputStream.flush();
//       bufferedInputStream.close();
//       outputStream.close();

//打印输出   控制输出字符集位GBK  否则中文乱码
PrintWriter oStream = new PrintWriter((new OutputStreamWriter(client.getOutputStream(),"GBK")),true);
//Font f=new Font(String name,  int style,   int size);

/* 横向放大一倍 */
// oStream.write(0x1c);
// oStream.write(0x21);
// oStream.write(4);
/* 纵向放大一倍 */
oStream.write(0x1c);
oStream.write(0x21);
oStream.write(8);
/* 横向纵向都放大一倍 */
// oStream.write(0x1c);
// oStream.write(0x21);
// oStream.write(12);

oStream.println("\t\t"+"餐厅订单"+"\n");
String printStr = "交易流水:"+serNo+
"\n"+"商户名称:"+"测试商户"+
"\n"+"订单号:"+orderNo+
"\n"+"卡号:"+CardNo+
"\n"+"时间:"+time+
"\n"+"交易金额:"+Amount+
"\n"+"**********************************************************";
oStream.print(printStr);

oStream.println("\n\n");
//自动切纸
for (int i = 0; i < getCutPaperByte().length; i++) {
oStream.write(getCutPaperByte()[i]);
}
oStream.close();
client.close();
//text.setText("File Sent");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}  
}.start();

}else{
Toast.makeText(getApplicationContext(), "网络异常", 3000).show();
}
}
});

}

/**切纸命令*/
public static byte[] getCutPaperByte(){
byte [] buffer = new byte[5];
buffer[0]='\n';//命令必须是单行
buffer[1]=29;
buffer[2]=86;
buffer[3]=66;
buffer[4]=1;
return buffer;
}

//判断是否联网

public  boolean IsNetWork(Context context){
ConnectivityManager cManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo info = cManager.getActiveNetworkInfo(); 
if (info != null && info.isAvailable()){ 
//能联网 
return  true; 
}else{ 
//不能联网 
return false; 
}
}

}

代码注释的大部分都为文档打印,在手机SD卡里一个TXT文档的打印。

为什么在code片段粘贴上去不能出现啊  ,算了  给大家麻烦了  code贴不上去,格式很难看啊 。抱歉抱歉。。。

demo和文档地址:http://download.csdn.net/detail/u013065139/7956445点击打开链接

Android 手机 链接 网络打印机相关推荐

  1. iOS和Android手机浏览器链接打开app store或应用市场下载软件

    iOS和Android手机浏览器链接打开app store或应用市场下载软件 1.Android主流手机跳转链接 // androidId 如:com.xxx.app// oppo oppomarke ...

  2. Android手机 全面屏(18:9屏幕)适配指南 点击打开链接

    Android手机 全面屏(18:9屏幕)适配指南 点击打开链接 从小米MIX 1发布以来,越来越多所谓"全面屏"手机发布,如三星S8,小米MIX2,VIVO X20,Google ...

  3. iOS和Android手机浏览器链接打开app store或应用市场下载软件讲解

    引言 当开发一个app出来后,通过分享引流用户去打开/下载该app软件,不同手机下载的地方不一样,比如:ios需要到苹果商店去下载,Android手机需要到各个不同的应用商店去下载(华为手机需要到华为 ...

  4. 如何判断Android手机当前是否联网

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在And ...

  5. PC 远程控制 android手机的方法之一VNC

    1.VNC访问 a .在android手机中安装vnc 的服务端:androidvncserver http://code.google.com/p/android-vnc-server/ 本文下载了 ...

  6. 如何将您的Google Authenticator凭证移至新的Android手机或平板电脑

    Most of the app data on your Android is probably synced online will automatically sync to a new phon ...

  7. nb-iot链路层加密_Google为低端Android手机和IoT设备创建了更快的加密

    nb-iot链路层加密 Google谷歌 Low-resource Android phones and IoT devices don't have the processing power to ...

  8. Android手机截屏

    对于android手机截屏,据我所知,现在主要有三种方法. 第一种,通过DDMS. 把手机连接上电脑,运行DDMS,选中你的手机设备,然后点击菜单"设备"->"Sc ...

  9. 新漏洞 RAMpage 曝光:2012年后发布的所有的 Android 手机都危险!

    近日,据外媒报道,一个安全团队最新发现了一个名为 RAMpage 的漏洞,可以改变 Android 手机的随机存取存储器(Random Access Memory,简称 RAM)的存储内容,由此黑客可 ...

最新文章

  1. IOS block 教程
  2. 信息收集——网站克隆和钓鱼邮件
  3. 安防硬件WIZnet基于全硬件TCP/IP的安防产品应用及方案
  4. Codeforces Round #694 (Div. 2) D. Strange Definition 质因子分解 + 平方数
  5. 使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据
  6. 腾讯视频免费下载安装_怎样下载腾讯视频里的视频
  7. 把你的科室做成蛋糕,你能想象是什么样子吗?
  8. Apache 服务器配置详解
  9. 9.27 csp-s模拟测试53 u+v+w
  10. 国开大学计算机应用基础形考答案模块了2,国开电大 计算机应用基础(本) 形考二答案...
  11. 20200723每日一句
  12. ffmpeg-20160714-git-bin.7z
  13. 智慧树工业机器人测试答案_知到智慧树玩转工业机器人答案章节单元测试答案...
  14. Kotlin中文教程
  15. mysql中数据字典_MySQL8.0之数据字典
  16. 在Qt环境下进行人机交互界面设计--工具条
  17. Rds mysql 内存配置_RDS MySQL内存管理
  18. 基于R语言的量表网络分析笔记
  19. 微信浏览器唤醒App
  20. maya刷权重时有个叉_为什么maya刷权重 笔刷是打叉

热门文章

  1. Linux查询指定时间段的日志
  2. 个人知识管理利器wiz
  3. 青少年计算机表演赛27,第27届中国青少年计算机表演赛颁奖仪式在京举行
  4. 领域驱动设计(3)模型驱动设计
  5. STM32学习记录0011——AD转换
  6. uniapp - 超详细 H5 网站图片压缩功能,图像上传前进行压缩降低大小并上传到服务器完整示例源码(附带 uview 组件库 u-upload 上传组件与该图片压缩插件 “搭配组合“ 使用教程)
  7. 自定义prometheus exporter实现监控阿里云RDS
  8. 需求分析:揭露原型图背后的黄金圈法则
  9. 基于AWS云服务的Web应用架构
  10. PHP hash_hmac sha256 遇到的坑 解决PHP与JAVA sha256结果不一致