在android中,如何在没有打印机插件的情况下打印

在android中,如何在没有打印机插件的情况下打印,android,printing,Android,Printing,在android中,我们可以在应用程序内存中添加打印机插件,或者在资产文件夹中添加jar文件,并尝试从应用程序调用它,以创建移动打印 我发现 >仅打印共享应用程序选项。没有谷歌云或任何云打印的任何其他方式。是 在Android 4.4(API级别19)及更高版本中,该框架提供直接从Android应用程序打印图像和文档的服务 /** * To print image / photo */ private void printPhoto() { // Get a PrintHelper

在android中,我们可以在应用程序内存中添加打印机插件,或者在资产文件夹中添加jar文件,并尝试从应用程序调用它,以创建移动打印

我发现

>仅打印共享应用程序选项。没有谷歌云或任何云打印的任何其他方式。

在Android 4.4(API级别19)及更高版本中,该框架提供直接从Android应用程序打印图像和文档的服务

/**
 * To print image / photo
 */
private void printPhoto() {
    // Get a PrintHelper instance
    PrintHelper photoPrinter = new PrintHelper(this);
    photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
    // get image from mipmap folder
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    // provide job name (which will be displayed in the print queue) and bitmap
    photoPrinter.printBitmap("droids.jpg - test print", bitmap);
}
参考印刷品

这是为我工作,我传递pdf文件到打印机它是 印刷

类WifiPrint扩展活动{TextView打印机名称,门方式, 打印机_端口;int端口=9100;WifiManager wifi=null; android.net.DhcpInfo d;字符串gateway_ip=“”

@在创建时覆盖受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u wifi\u print);wifi=(WifiManager) getSystemService(Context.WIFI\u服务);打印机名称=(TextView) findViewById(R.id.textView1);gate_way=(TextView) findViewById(R.id.textView2);打印机端口=(TextView) findViewById(R.id.textView3); /*de.lohndirekt.print.ipppprintservice svc=新的IPPPprintservice(printerURI);InputStream=新 BufferedInputStream(新文件输入流(“image.epl”);DocFlavor flavor=DocFlavor.INPUT\u STREAM.AUTOSENSE;Doc myDoc=new SimpleDoc(流、风味、空);DocPrintJob作业= svc.createPrintJob();job.print(myDoc,null)*/

}

@重写公共布尔onCreateOptions菜单(菜单菜单){// 为菜单充气;这会将项目添加到操作栏(如果存在)。 getMenuInflater().充气(R.menu.wifi_print,menu);返回true; }

公共无效wifisettings(视图五){startActivityForResult(新) 意图( android.provider.Settings.ACTION_WIFI_Settings),0);}

公共连接插座(视图v){
/*Uri filepath=Uri.parse(“android.resource://”+getPackageName()+“/”+R.raw.pdfsample);Toast.makeText(this,filepath.getPath(),Toast.LENGTH_LONG)。show();*/ClientThread ClientThread=new ClientThread(“”);线程clientstartThread=new 线程(clientThread);clientstartThread.start();}

公共字符串intToIp(inti){return((i&0xFF)+“+”((i>>8) &0xFF)+“+((i>>16)和0xFF) +“+((i>>24)和0xFF));}

@在ActivityResult上覆盖受保护的void(int请求代码,int 结果代码,意图数据){//TODO自动生成的方法存根

  super.onActivityResult(requestCode, resultCode, data);      if
(requestCode==0){WifiInfo WifiInfo=wifi.getConnectionInfo(); d=wifi.getDhcpInfo()

intToIp(d.gateway);gate_way.setText(“打印机Ip:+网关Ip”); 打印机_port.setText(“端口:+端口”)

公共文件createFileFromInputStream(InputStream InputStream){

类ClientThread实现可运行的{String filepath=”“; BufferedInputStream bis=null;FileInputStream fis

  Socket socket;

  public ClientThread(String filename) {          filepath = filename;        }

  @Override       public void run() {             // TODO Auto-generated method
存根尝试{
InputStream in=getResources().openRawResource(R.raw.pdfsample); createFileFromInputStream(在中); 文件pdfFile=新文件(“/sdcard/testpdf.pdf”); 字节[]mybytearray=新字节[(int)pdfFile.length()]; 插座=新插座(网关ip,端口); runOnUiThread(新的Runnable(){
@凌驾 公开募捐{ //TODO自动生成的方法存根 if(socket.isConnected()){ Toast.makeText(WifiPrint.this, “已连接套接字”, Toast.LENGTH_LONG).show();
}
} });
fis=新文件输入流(pdfFile); bis=新的缓冲数据流(fis); 读取(mybytearray,0,mybytearray.length); OutputStream os=socket.getOutputStream(); write(mybytearray,0,mybytearray.length); os.flush()

}

}

在清单文件中:只需添加:



这将如何找到打印机?如何和android手机首先连接打印机?此代码将为您提供连接网络中的打印机列表。选择打印机后,他们会要求打印或不打印。这是打印机的androids服务。您尝试过此代码吗?将手机和打印机连接到同一网络并运行应用程序。无需连接wi打印机,但您的打印机和设备必须处于同一网络连接中。您是否尝试过该代码????
  }   }
 try{
    File f = new File("/sdcard/testpdf.pdf");
    OutputStream outputStream = new FileOutputStream(f);
    byte buffer[] = new byte[1024];
    int length = 0;

    while((length=inputStream.read(buffer)) > 0) {
      outputStream.write(buffer,0,length);
    }

    outputStream.close();
    inputStream.close();

    return f;
 }catch (IOException e) {
       //Logging exception
 }

 return null;     }
  Socket socket;

  public ClientThread(String filename) {          filepath = filename;        }

  @Override       public void run() {             // TODO Auto-generated method
          if (bis != null) {
              bis.close();
              os.close();
              socket.close();
              fis.close();

          }
              } catch (final UnknownHostException e) {
          // TODO Auto-generated catch block
          runOnUiThread(new Runnable() {

              @Override
              public void run() {
                  // TODO Auto-generated method stub
                  Toast.makeText(WifiPrint.this,
                          "UnHost Exceptions" + e.getMessage(),
                          Toast.LENGTH_LONG).show();

              }
          });             } catch (final IOException e) {
          // TODO Auto-generated catch block
          runOnUiThread(new Runnable() {

              @Override
              public void run() {
                  // TODO Auto-generated method stub
                  Toast.makeText(WifiPrint.this,
                          "Io Exceptions" + e.getMessage(),
                          Toast.LENGTH_LONG).show();

              }
          });             } finally {
          try {
              if (bis != null) {
                  bis.close();
                  socket.close();
                  fis.close();
              }
          } catch (final IOException e) {
              // TODO Auto-generated catch block
              runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                      // TODO Auto-generated method stub
                      Toast.makeText(
                              WifiPrint.this,
                              "Io Exeption in Closing Socket"
                                      + e.getMessage(), Toast.LENGTH_LONG)
                              .show();
                  }
              });
          }           }       }
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-feature android:name="android.hardware.wifi" />