Android无线连接打印第三方开发的实现
[java]
<span style="font-size:18px;"></span>
最近在做关于Android的项目,Android果然不是出于国内,很多东西都是国外已经成熟了或者已经开发好了,国内去效仿。为了找关于Android无线连接打印机并打印的第三方开发方案都非常的困难。由于最近项目需要用到这一块,经过我的组员的努力,找到了一种解决方案,为了能够和大家分享一下,也为了自己以后的参考,在这里稍作总结一下。经验有限,希望有更好方案的可以不吝赐教,我也会在以后的学习中不断修缮自己的方案。
为了便于大家的参考,本文涉及到的所有的相关工程文件都在本人的csdn下载部分有相关资料下载。
1.背景:
很多开发者在工作上或者学习中可能需要通过基于Android系统的手机或者平板终端连接打印机,并驱动打
印机打印自己发送的图片或者文本。本篇博客主要致力于解决这个问题。
2.方案:
本方案需要在android系统中安装一个软件send2print,在我的csdn下载频道中有相应的中文破解版下载链
接,然后再写自己的程序,来调用其接口进行打印。事先需要在send2print中配置好默认打印机,我们写的程序
就是调用其默认打印机进行无线打印。
这个软件可以安装直接使用,可以搜索开着无线的打印机,并连接进行打印,目前只有国外有卖该产品,
国内网上可以下载汉化版,我的csdn下载中也有。汉化版有一定的缺陷,经过测试,佳能产品的大部分型号
都无法实现打印,但是HP LaserJet 1536dnf MFP可以实现打印。
4.代码实现 我也不想贴代码,但是,安装好之后,配置上默认打印机,你只需要两个类就可以轻松实现无线打印了,
由于代码量不大,也很容易看懂,我就直接贴在下面了,如果需要测试打印的资源文件可以到我csdn下载频道
下载,这该死的博客怎么没有直接上传资源功能,还是我没有发现啊,谁发现了告诉我一声啊,嘿嘿。
PrintUtils.java
[html]
package com.rcreations.testprint;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInte易做图ce;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Picture;
import android.net.Uri;
import android.os.Environment;
import android.util.Log;
public class PrintUtils
{
// for logging
private static final String TAG = PrintUtils.class.getSimpleName();
// Send 2 Printer package name
private static final String PACKAGE_NAME = "com.rcreations.send2printer";
// intent action to trigger printing
public static final String PRINT_ACTION = "com.rcreations.send2printer.print";
// content provider for accessing images on local sdcard from within html content
// sample img src shoul be something like /2012/0821/20120821021535608.gif"
public static final String LOCAL_SDCARD_CONTENT_PROVIDER_PREFIX = "content://s2p_localfile";
/**
* Returns true if "Send 2 Printer" is installed.
*/
public static boolean isSend2PrinterInstalled( Context context )
{
boolean output = false;
PackageManager pm = context.getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo( PACKAGE_NAME, 0 );
if( pi != null )
{
output = true;
}
} catch (PackageManager.NameNotFoundException e) {}
return output;
}
/**
* Launches the Android Market page for installing "Send 2 Printer"
* and calls "finish()" on the given activity.
*/
public static void launchMarketPageForSend2Printer( final Activity context )
{
AlertDialog dlg = new AlertDialog.Builder( context )
.setTitle("Install Send 2 Printer")
.setMessage("Before you can print to a network printer, you need to install Send 2 Printer from the Android Market.")
.setPositiveButton( android.R.string.ok, new DialogInte易做图ce.OnClickListener() {
@Override
public void onClick( DialogInte易做图ce dialog, int which )
{
// launch browser
Uri data = Uri.parse( "http://market.android.com/search?q=pname:" + PACKAGE_NAME );
Intent intent = new Intent( android.content.Intent.ACTION_VIEW, data );
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
context.startActivity( intent );
&nbs
补充:移动开发 , Android ,