第一个mac Android Studio实现APP的例子

安装Android Studio

在网上看了许多的教程,可能世界变化太快,在安装Android Studio时并没有碰到很多的问题。主要一点是当访问google的网站时需要在使用下载和编辑软件时,将比如这个帮助文件的地址中的com部分变为"google.cn"就可以一路畅通无阻了。比如下面是点击Android Studio的帮助中的快速入门网址http://developer.android.com/r/studio-ui/menu-start.html。这个网址变成http://developer.android.google.cn/studio-ui/menu-start.html就可以了。下面是帮助的画面:
在这里插入图片描述

开发一个网络应用的实例

安装完成软件后要开发一个手机或者是PAD的应用。因为当前嵌入式技术发展迅速,市场进步很快,国产的MCU技术水平在不断提升。一个30元以下的控制器可以生成热点,这就为开发手机或者是PAD应用提供了非常灵活的前景。网络技术服务离不开TCP/IP,下面以一个TCP/IP开发应用为例介绍Android Studio的开发。

开发APP

APP的开发非常简单,主要包括下面的步骤:

  1. 生成一个应用,Android Studio会帮助我们完成需要的工作:
    在这里插入图片描述
    我选择了一个Empty Activity的应用。生成的文件及界面是一个有TextView控件的程序。如下:
package com.example.ex6_5;

import android.os.Bundle;
import android.os.StrictMode;
//import android.support.v7.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.DataInputStream;
//import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {
    private Socket socket = null;
    private DataInputStream dis = null;
    private DataOutputStream dos = null;
    private TextView mTextView1;
    private Button Button1;
    String msg = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView1 = (TextView) findViewById(R.id.textView);
        Button1 = (Button) findViewById(R.id.Button);
        Button1.setOnClickListener(new mClick());
        // 以下为避免NetworkOnMainThreadException异常
       StrictMode.setThreadPolicy(new StrictMode
                .ThreadPolicy
                .Builder()
                .detectDiskWrites()
                .detectDiskReads()
                .detectNetwork()
                .penaltyLog()
                .build());
    }
    class mClick implements View.OnClickListener
    {
        @Override
        public void onClick(View v)
        {
            Client();
        }
        public void Client()
        {
            try
            {
                socket = new Socket("192.168.2.149", 4321);
            }
            catch (Exception ioe)
            {
                System.out.print("Socket err");
            }
            try
            {
               dis = new DataInputStream(socket.getInputStream());
                dos = new DataOutputStream(socket.getOutputStream());
                dos.writeUTF("给我发送数据...");
                dos.flush();
            }
            catch (IOException ioe)
            {
                System.out.print("DataSteam create err");
            }
            try
            {
                Thread.sleep(500);
                msg = "手机客户端发来贺电!";
                WriteString(msg);               // 发送数据
                dos.close();
                socket.close();
            }
            catch (Exception ioe)
            {
                System.out.println("socket close() err ........");
            }
            ReadStr();
        }
        // 写数据到socket,即发送数据
        public void WriteString(String str)
        {
            try
            {
                dos.writeUTF(str);
                dos.flush();
                ReadStr();
                socket.close();
            }
            catch (IOException e)
            {
                System.out.print("WriteString() err");
            }
        }
        // 显示从socket返回的数据,即读取数据
        public void ReadStr()
        {
            try
            {
                if ((msg = dis.readUTF()) != null)
                {
                    mTextView1.append(msg);
                }
            }
            catch (IOException ioe)
            {
                System.out.print("ReadStr() err");
            }
        }

    }
}

在activity_main.xml中添加一个TextView和一个Button就可以实现这个界面。注意,这一部分的代码是一个TCP/IP的客户端,还要在一个机器上实现TCP/IP服务器。

java TCP/IP服务器

可以用java实现,最简单的事情就是用java实现TCP服务器。随便找一个文字编辑软件,编写一个服务器的程序,用java -version监测一下机器是否安装了java。我的机器安装了java,服务器程序如下:

import java.io.DataOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import static java.lang.System.in;
import static java.lang.System.out;

public class server
{
    private ServerSocket ss;
    private Socket socket;
    private DataInputStream dis;
    private DataOutputStream dos;
    private server()
    {
        new ServerThread().start();
    }
    class ServerThread extends Thread
    {
        public void run()
        {
            try
            {
                ss = new ServerSocket(4321);
                out.println("TCP服务器启动了");
                while(true)
                {
                    socket = ss.accept();           // 阻塞端口,等待客户端连接
                    out.println("有客户端连接服务器");
                    dis = new DataInputStream(socket.getInputStream());
                    dos = new DataOutputStream(socket.getOutputStream());
                    dos.writeUTF("恭喜你,连接服务器成功!\n");   // 给手机发送一条数据
                    dos.flush();
                    out.println("服务器休眠20秒......");
                    Thread.sleep(500);
                    String msg = "";
                    if ((msg = dis.readUTF()) != null)
                    {
                        out.println(msg);
                    }
                    dos.writeUTF("你发送来的数据服务器收到了。^ _ ^");
                    dos.flush();
                }

            }
            catch (Exception e)
            {
                out.println("读写错误");
            }
            finally
            {
                try
                {
                    in.close();
                    out.close();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) throws IOException
    {
        new server();
    }
}

运行APP

可以在模拟器上运行APP,也可以在真实的设备上运行APP,在真实的设备上运行APP没有复杂的操作,用一个USB电缆连接真实设备和mac。一般情况下会自动安装驱动,直接选择这个设备,点击运行就可以下载在真实设备上。运行效果

在这里插入图片描述
手机界面


至此,一个手机APP就实现了。是不是很简单。但我经历了痛苦的过程。真实设备到现在还有一个使用inetAddress的类还在闪退。慢慢来吧,急不得!

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值