2012-03-23 7 views
22

Tôi phải phát triển ứng dụng cho máy tính bảng Android yêu cầu in tệp bằng máy in Bluetooth . In qua Bluetooth là một trong những tính năng quan trọng nhất của ứng dụng của tôi. Thật không may, không có nhiều thông tin về chủ đề này nên tôi muốn xin lời khuyên.Android: In Bluetooth

Theo tôi biết không thể in qua Bluetooth trên Android (sử dụng cuộc gọi gốc), vì Ngăn xếp BT của Android không triển khai BPP (Hồ sơ in cơ bản). Làm một nghiên cứu nhỏ, tôi đã tìm thấy các lựa chọn thay thế sau:

SDK/Libraries

  • Sybase-iAnywhere-Blue-SDK-for-Android: SDK thương mại có hỗ trợ rất nhiều hồ sơ BT. Phát triển bởi một công ty lớn (hỗ trợ tốt tôi đoán). Tôi đã không tìm thấy nhiều thông tin về điều này. Có phải có một số tài liệu, API hoặc ví dụ về cách sử dụng SDK này không? có ai biết cách tải xuống phiên bản demo không? (liên kết có vẻ là bị hỏng lần cuối cùng tôi đã thử)
  • iPrint SDK: SDK thương mại. Một số ví dụ trên trang web của họ nhưng không có gì khác.
  • Zebralink: Chỉ dành cho máy in Zebra (tự nhiên). Các nhà sản xuất khác cũng có thể có API cho máy in của họ.

Google Play Apps

  • PrinterShare: Thương mại (key Premium)
  • Bluetooth Smart In ấn: miễn phí và nhẹ. Khiếu nại in bằng máy in Bluetooth.

Lý tưởng nhất là tôi không muốn bị ràng buộc với mẫu máy in hoặc thương hiệu cụ thể. Bây giờ các câu hỏi:

  • Bạn nghĩ đó sẽ là lựa chọn tốt nhất?
  • Bạn có biết bất kỳ phương án thay thế nào khác mà tôi đã bỏ lỡ không?
  • Tôi có thể dễ dàng in các tệp từ Ứng dụng của mình bằng Ứng dụng bên ngoài không?
  • Tôi nên sử dụng định dạng nào cho các tệp của mình để có thể in trên Bluetooth? (pdf, hình ảnh, v.v.)
  • Bất kỳ lời khuyên nào về nhà sản xuất và kiểu máy in?
  • Bạn đã có trải nghiệm in thực tế qua Bluetooth trên Android chưa?
  • Có kế hoạch nào trong tương lai gần để triển khai in Bluetooth trên Android không?

Cảm ơn trước sự giúp đỡ của bạn;)

+0

Tôi có thể xác minh cho ứng dụng ** PrinterShare ** - https://play.google.com/store/apps/details?id=com.dynamixsoftware.printershare - nó hoạt động trên các thiết bị của tôi cho HP của tôi Máy in di động Officejet 100. Tuy nhiên, tôi không thể tìm thấy ứng dụng ** Bluetooth Smart Printing ** trong Google Play. Bạn có một liên kết? –

Trả lời

11

sao Micronics có SDK cho in ấn Android qua Bluetooth (cũng như ethernet và cổng USB). Bạn có thể tải xuống tại đây: http://www.starmicronics.com/support/SDKDocumentation.aspx.

Như bạn đã đề cập, bạn không thể in nguyên bản tại thời điểm này để các giải pháp thay thế bạn tìm thấy là các tùy chọn của bạn ngay hôm nay.

Theo kinh nghiệm của tôi, tốt nhất là sử dụng API chứ không phải ứng dụng bên ngoài. Lý do lớn nhất là bạn có toàn quyền kiểm soát hành vi của máy in. Thật dễ dàng nếu API được xây dựng một cách thông minh. Sử dụng ứng dụng bên ngoài đang hạn chế vì bạn không thể tùy chỉnh bản in của mình theo cách bạn muốn.

SDK sao tôi đã liên kết với bạn để có ứng dụng mẫu thực sự tốt đẹp cho phép bạn kiểm tra và tùy chỉnh nhiều chức năng của máy in để xem chúng hoạt động. Mỗi hàm được ghi lại trong mã nguồn. Các lệnh và tham số của chúng cũng có sẵn trong chính ứng dụng như là một tham chiếu nhanh trên màn hình thuận tiện. Trên tất cả, nó cũng được ghi nhận.

Sao là một công ty tuyệt vời để làm việc với vì bạn có thể nhận được một máy in demo miễn phí mà bạn chọn để sử dụng cho sự phát triển của bạn.

Nếu bạn chọn cách này, bạn có thể gửi văn bản thuần túy đến máy in cùng với các lệnh. API xử lý chuyển đổi dữ liệu thành những gì máy in có thể hiểu được.

+1

Is micronics sao là một sdk giấy phép miễn phí. – blackjack

+0

STARIOSDK có thể hữu ích cho việc in tất cả các loại tập tin. – blackjack

+1

Bạn có biết liệu SDK có hoạt động với các máy in Bluetooth khác không? –

1

Khả năng in máy in BlueTooth phụ thuộc rất lớn vào kiểu máy in bạn đang cố gắng sử dụng.

Ví dụ: tôi sử dụng máy in CITIZEN CMP-10BT có thể được kiểm soát bằng cách gửi các chuỗi byte cụ thể có thể dễ dàng thực hiện bằng API Android. Tôi thậm chí còn xây dựng một khuôn khổ trên đó.

Vấn đề nằm trong thực tế bạn không thể biết chắc chắn các kiểu máy in nào sẽ được người dùng cuối sử dụng vì vậy một số SDK cuối cùng chắc chắn sẽ là nhu cầu lớn.

+0

Cảm ơn câu trả lời của bạn, Alex. Trong tò mò, là "khung" bạn đề cập đến nguồn mở. Và, nếu có, thì ai có thể tìm thấy nó? Cảm ơn. –

+0

@ Josh Pinter: Thật không may, không. Nó là một phần của dự án thương mại nên không có nơi nào nó có thể được "tìm thấy". Nếu bạn vẫn quan tâm, bạn có thể viết cho tôi một email (xem địa chỉ trong hồ sơ) và tôi có thể cung cấp một số phần mã cần thiết để in. –

+0

Cảm ơn, Alex. Không thể tìm thấy địa chỉ email của bạn nhưng tôi nghĩ rằng tôi đã có những gì tôi đang tìm kiếm, ngay bây giờ. Tôi đánh giá cao đề nghị của bạn để giúp đỡ, mặc dù. –

1

Bạn có thể tải xuống thành phần này: https://components.xamarin.com/view/ocpp-thermal-printer-usb hoạt động như một nét quyến rũ trong hầu hết các máy in chung của usb và bluetooth. Tôi créate một lớp để gửi các lệnh esc thông thường nhất. Cách sử dụng: outerInstance.mService.Write (modes.pordefecto());

public class modes 
{ 
    public static byte[] condensado() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x21; 
     cmd[2] |= 0x01; 

     return cmd; 
    } 

    public static byte[] pordefecto() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x21; 
     cmd[2] |= 0x00; 
     return cmd; 
    } 

    public static byte[] negrita() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x21; 
     cmd[2] |= 0x08; 
     return cmd; 
    } 

    public static byte[] lineamenor() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x33; 
     cmd[2] |= 0x14; 
     return cmd; 
    } 

    public static byte[] cancelalinea() 
    { 
     byte[] cmd = new byte[2]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x32; 
     return cmd; 
    } 

    public static byte[] centra() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x61; 
     cmd[2] |= 0x01; 
     return cmd; 
    } 

    public static byte[] quitacentro() 
    { 
     byte[] cmd = new byte[3]; 
     cmd[0] = 0x1b; 
     cmd[1] = 0x61; 
     cmd[2] |= 0x00; 
     return cmd; 
    } 

    public static byte[] codepage() 
    { 
     byte[] cmd = new byte[5]; 
     cmd[0] = 0x1f; 
     cmd[1] = 0x1b; 
     cmd[2] = 0x1f; 
     cmd[3] |= 0xfe; 
     cmd[4] |= 0x01; 
     return cmd; 
    } 

    public static byte[] latino() 
    { 
     byte[] cmd = new byte[5]; 
     cmd[0] = 0x1f; 
     cmd[1] = 0x1b; 
     cmd[2] = 0x1f; 
     cmd[3] |= 0xff; 
     cmd[4] |= 0x12; 
     return cmd; 
    } 
    public static byte[] logo() 
    { 
     byte[] cmd = new byte[4]; 
     cmd[0] = 0x1c; 
     cmd[1] = 0x70; 
     cmd[2] = 0x01; 
     cmd[3] |= 0x00; 

     return cmd; 
    } 
}