安卓TV应用 Hello Word - 怎样新建一个Android TV 项目

安卓TV应用 Hello Word - 怎样新建一个Android TV 项目

    • 0、新建Android TV工程
    • 1、新建一个空页面
    • 2、添加AndroidManifest.xml配置
    • 3、正常开发
    • 4、虚拟机运行

0、新建Android TV工程

像平常一样新建一个Android工程,只不过这次我们选的是TV -> Add No Activity
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第1张图片
然后继续,改个名字,Finish!
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第2张图片

1、新建一个空页面

在项目上右键- >New- >Activity- >Empty Activity
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第3张图片
这里我就不改activity的名字了,但是在所建的Activity中,建议有且仅有一个勾选Luncher Activity,勾选这个选项后,是可以直接在桌面上启动这个Activity的。
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第4张图片

2、添加AndroidManifest.xml配置

打开AndroidManifest.xml文件,添加一个文件属性和两个硬件声明
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第5张图片
整个AndroidManifest.xml文件代码如下:


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="top.minuy.testtv"
    tools:ignore="MissingLeanbackLauncher">

    <uses-feature
        android:name="android.software.leanback"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>
        activity>
    application>

manifest>

3、正常开发

至此,可以像正常开发安卓应用一样,在布局文件中加控件,在.java里面写代码啦~

但是要注意的是,如果直接继承自AppCompatActivity会报错(You need to use a Theme.AppCompat theme (or descendant) with this activity.),这里只需要改AppCompatActivity为Activity就好了
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第6张图片
修改下布局
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第7张图片

4、虚拟机运行

新建一个Android TV虚拟机
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第8张图片
新建虚拟机
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第9张图片
选择安卓版本
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第10张图片
选择横屏更接近电视的实际使用情况

启动虚拟机,你会发现用鼠标点不了??! 对,在安卓TV里,一般是没有触屏支持的,需要使用键盘上的上下左右键和回车键来控制
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第11张图片
点下运行,就可以看到第一个应用运行起来啦~ 开心(**)
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第12张图片
下面是我加了一个时间显示后用U盘传到我奶奶家电视上运行的效果:
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第13张图片
虚拟机上的测试截图:
安卓TV应用 Hello Word - 怎样新建一个Android TV 项目_第14张图片

JAVA代码:

package top.minuy.testtv;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MainActivity extends Activity {

    final static int TIME_UPDATA = 17;

    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case TIME_UPDATA:
                    String timeStr = (String) msg.obj;
                    tvTime.setText(timeStr);
                    break;
            }
        }
    };

    TextView tvTime;
    Boolean isRun;

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

        tvTime = findViewById(R.id.tvTime);
        isRun = true;

        new Thread(){
            @Override
            public void run() {
                while (isRun){
                    try {
                        Date date = new Date();
                        SimpleDateFormat format = new SimpleDateFormat("现在是\nyyyy年MM月dd日\nHH点mm分ss秒");

                        Message msg = new Message();
                        msg.what = TIME_UPDATA;
                        msg.obj = format.format(date);
                        handler.sendMessage(msg);

                        sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

    @Override
    public void finish() {
        super.finish();
        isRun = false;
    }
}

布局代码:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你好世界"
        android:textSize="36sp" />

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="time"
        android:textSize="24sp" />
LinearLayout>

你可能感兴趣的:(Java)