Android 手机 链接 网络打印机
最近在有涉及到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 手机 链接 网络打印机相关推荐
- iOS和Android手机浏览器链接打开app store或应用市场下载软件
iOS和Android手机浏览器链接打开app store或应用市场下载软件 1.Android主流手机跳转链接 // androidId 如:com.xxx.app// oppo oppomarke ...
- Android手机 全面屏(18:9屏幕)适配指南 点击打开链接
Android手机 全面屏(18:9屏幕)适配指南 点击打开链接 从小米MIX 1发布以来,越来越多所谓"全面屏"手机发布,如三星S8,小米MIX2,VIVO X20,Google ...
- iOS和Android手机浏览器链接打开app store或应用市场下载软件讲解
引言 当开发一个app出来后,通过分享引流用户去打开/下载该app软件,不同手机下载的地方不一样,比如:ios需要到苹果商店去下载,Android手机需要到各个不同的应用商店去下载(华为手机需要到华为 ...
- 如何判断Android手机当前是否联网
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在And ...
- PC 远程控制 android手机的方法之一VNC
1.VNC访问 a .在android手机中安装vnc 的服务端:androidvncserver http://code.google.com/p/android-vnc-server/ 本文下载了 ...
- 如何将您的Google Authenticator凭证移至新的Android手机或平板电脑
Most of the app data on your Android is probably synced online will automatically sync to a new phon ...
- nb-iot链路层加密_Google为低端Android手机和IoT设备创建了更快的加密
nb-iot链路层加密 Google谷歌 Low-resource Android phones and IoT devices don't have the processing power to ...
- Android手机截屏
对于android手机截屏,据我所知,现在主要有三种方法. 第一种,通过DDMS. 把手机连接上电脑,运行DDMS,选中你的手机设备,然后点击菜单"设备"->"Sc ...
- 新漏洞 RAMpage 曝光:2012年后发布的所有的 Android 手机都危险!
近日,据外媒报道,一个安全团队最新发现了一个名为 RAMpage 的漏洞,可以改变 Android 手机的随机存取存储器(Random Access Memory,简称 RAM)的存储内容,由此黑客可 ...
最新文章
- IOS block 教程
- 信息收集——网站克隆和钓鱼邮件
- 安防硬件WIZnet基于全硬件TCP/IP的安防产品应用及方案
- Codeforces Round #694 (Div. 2) D. Strange Definition 质因子分解 + 平方数
- 使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据
- 腾讯视频免费下载安装_怎样下载腾讯视频里的视频
- 把你的科室做成蛋糕,你能想象是什么样子吗?
- Apache 服务器配置详解
- 9.27 csp-s模拟测试53 u+v+w
- 国开大学计算机应用基础形考答案模块了2,国开电大 计算机应用基础(本) 形考二答案...
- 20200723每日一句
- ffmpeg-20160714-git-bin.7z
- 智慧树工业机器人测试答案_知到智慧树玩转工业机器人答案章节单元测试答案...
- Kotlin中文教程
- mysql中数据字典_MySQL8.0之数据字典
- 在Qt环境下进行人机交互界面设计--工具条
- Rds mysql 内存配置_RDS MySQL内存管理
- 基于R语言的量表网络分析笔记
- 微信浏览器唤醒App
- maya刷权重时有个叉_为什么maya刷权重 笔刷是打叉
热门文章
- Linux查询指定时间段的日志
- 个人知识管理利器wiz
- 青少年计算机表演赛27,第27届中国青少年计算机表演赛颁奖仪式在京举行
- 领域驱动设计(3)模型驱动设计
- STM32学习记录0011——AD转换
- uniapp - 超详细 H5 网站图片压缩功能,图像上传前进行压缩降低大小并上传到服务器完整示例源码(附带 uview 组件库 u-upload 上传组件与该图片压缩插件 “搭配组合“ 使用教程)
- 自定义prometheus exporter实现监控阿里云RDS
- 需求分析:揭露原型图背后的黄金圈法则
- 基于AWS云服务的Web应用架构
- PHP hash_hmac sha256 遇到的坑 解决PHP与JAVA sha256结果不一致