养乐多滋滋滋 2025-06-18 09:04 采纳率: 76%
浏览 50
已结题

关于#android#的问题:安卓连接打印机输出

今天写个demo,关于,安卓连接打印机,进行输出,打印机品牌 RIOCH MP1813L, 以下是代码
MainActivity相关代码

public class MainActivity extends AppCompatActivity {
    private static final String PRINTER_IP = "192.168.10.251";
    private static final int PRINTER_PORT = 10001;
    private static final String PRINT_TEMPLATE = "这是固定的打印模板\n示例内容\n";

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

        Button printButton = findViewById(R.id.btn_print);
        printButton.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            // 连接打印机
                            Socket socket = new Socket(PRINTER_IP, PRINTER_PORT);
                            OutputStream outputStream = socket.getOutputStream();

                            // 发送打印数据
                            outputStream.write(PRINT_TEMPLATE.getBytes());
                            outputStream.flush();

                            // 关闭连接
                            outputStream.close();
                            socket.close();

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this, "打印成功", Toast.LENGTH_SHORT).show();
                                }
                            });
                        } catch (IOException e) {
                            e.printStackTrace();
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    Toast.makeText(MainActivity.this, "打印失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
                                }
                            });
                        }
                    }
                }).start();
            }
        });
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <Button
        android:id="@+id/btn_scan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="扫描蓝牙设备" />

    <ListView
        android:id="@+id/list_devices"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <EditText
        android:id="@+id/et_print_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入要打印的内容" />

    <Button
        android:id="@+id/btn_print"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="打印" />

</LinearLayout>

AndroidManifest.xml配置的相关

img

运行后的效果图

img

但是打印机不出纸

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-06-18 09:04
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    关于安卓连接打印机输出的问题

    你好!根据你的问题,似乎你想在安卓应用中连接 RIOCH MP1813L 打印机并进行输出。下面是解决方案:

    首先,你需要在 AndroidManifest.xml 文件中添加打印服务的权限:

    <uses-permission android:name="android.permission.PRINT" />
    

    然后,在 MainActivity 中,你可以使用 PrintManager 类来连接打印机和进行输出:

    PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
    PrintDocumentAdapter printAdapter = printManager.getPrintDocumentAdapter("RIOCH MP1813L");
    printManager.startPrint(printAdapter, new PrintAttributes.Builder().build());
    

    在上面的代码中,我们首先获取 PrintManager 对象,然后使用 getPrintDocumentAdapter 方法获取打印机的适配器。最后,我们使用 startPrint 方法开始打印。

    如果你需要更多的控制和自定义打印输出,可以使用 PrintDocumentAdapter 类的其他方法,例如 write 方法来写入打印数据。

    请注意,这只是一个基本示例代码,你可能需要根据你的具体需求进行修改和调整。

    如果你需要更多帮助或有其他问题,请随时问我!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月24日
  • 创建了问题 6月18日