小胖月安卓版,随机选号、叫号功能,互动功能

小胖月安卓版提供随机选号、叫号和互动功能,支持自定义数字范围,避免重复号码。随机选号利用RandomUtil类,叫号借助TextToSpeech类进行语音播报。互动部分集成腾讯兔小巢组件,简化开发工作。文章还提到了权限配置和APP演示。

目前android端应用市场有很多随机选号的APP,但是功能大多很单一,基本上没有什么动画和互动效果。小胖月安卓版不仅可以随机选号、叫号功能,还可以设置数字范围。

 1.随机选号

比如公司员工有300个人,就是300个号,范围设置1~300,假设一等奖10个号,那就抽10次,出过了一等奖的号码,在后面的奖中不会再出现。

核心代码主要使用到RandomUtil类,从数组中随机获取一个数,动画方面主要是android通用的动画效果。

package com.zjl.myapplication.utils;

import android.util.Log;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;

// int num=(int)(Math.random()*(max-min+1)+min);
public class RandomUtil {

    private static List<Integer> bag2 = new ArrayList<>();
    private static int min;
    private static int max;

    public static void main(String[] args) {

        min = 1;
        max = 10;
        bag2 = putNumber(min, max);
        hide = 25;
        while (true) {
            if (isNotEmpty()) {
                int a = getNumber(getLocation());
             
            } else {
                //bag2 = putNumber();
                break;
            }
        }

    }

    //根据给定范围插入数据
    public static List<Integer> putNumber(int min, int max) {
        List<Integer> list = new LinkedList<>();
        for (int i = min; i <= max; i++) {
            list.add(i);
        }
        bag2 = list;
        return bag2;
    }

    //返回从bag2里取的数
    public static int getNumber(int location) {
        int number = bag2.get(location);
        bag2.remove(location);
        return number;
    }

    public static int getLocation() {
        //随机出百分率位置
        int location = new Random().nextInt(bag2.size());
        return location;
    }

    //数组不为空
    public static boolean isNotEmpty(){
        return bag2.size() != 0;
    }
}

另外出过的号码需要从数组remove掉,防止重复号码出现:

                    dataList.remove(index); //把选中的数移除
                    //Log.e("nnn", "Thread: " + Arrays.toString(dataList.toArray()));
                    Message msg = Message.obtain(handler);
                    msg.what = 4;
                    msg.obj = data;
                    handler.sendMessage(msg);
                    onPause();

2.叫号功能

叫号功能使用的是安卓系统自带的TTS语音播报,初始化TextToSpeech类,一般在onCreate方法中初始化:

tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
    @Override
    public void onInit(int i) {
        if (i == TextToSpeech.SUCCESS) {
            tts.setLanguage(Locale.CHINESE);
        }
    }
});

值得注意的是有些系统高度定制的手机使用TextToSpeech是无效果的,原因是系统没有内置的语音播报库,需要自己在应用商城下载安装后语音播报才有声音。如果大家在开发过程中遇到这类问题,先检查手机有没有安装语音播报库。

设置语音播报的文本:

private void choseNumber1() {
        choseTv.postDelayed(new Runnable() {
            @Override
            public void run() {
                int s = Integer.parseInt(tv1.getText().toString());
                if (counts > 1) {
                    if (isOneNum) {
                        sb.append(s).append("");
                        choseTv.setText(sb.toString());
                        isOneNum = false;
                    } else {
                        sb.append("、").append(s);
                        choseTv.setText(sb.toString());
                    }
                } else {
                    sb.append(s);
                    choseTv.setText(sb.toString());
                }

                if(TextUtils.isEmpty(customSound)){
                    tts.speak(tv1.getText().toString() + "号", TextToSpeech.QUEUE_FLUSH, null);
                } else {
                    tts.speak(tv1.getText().toString() + "号" + customSound, TextToSpeech.QUEUE_FLUSH, null);
                }

            }
        }, 80);
    }

获取textView上的文本和自定义的播报内容拼接成完整的播报内容,通过View的postDelayed方法去刷新UI。

3.互动功能

        互动模块功能集成的是腾讯兔小巢组件,该组件是免费的,大家有兴趣自己去了解一下,基本上几行代码就能搞定。通过接入这个组件,省去了很多繁琐的需求功能开发。减轻了开发者的工作量,而且简单使用。

        第一步先去官网注册属于自己app的url,然后通过webview.load(url)即可成功接入该组件。

        webview代码:

        webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);// 这个要加上

        /* 获得 webview url,请注意url单词是product而不是products,products是旧版本的参数,用错地址将不能成功提交 */
        String url = "https://support.qq.com/product/xxxxx";

        /* WebView 内嵌 Client 可以在APP内打开网页而不是跳出到浏览器 */
        WebViewClient webViewClient = new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                super.shouldOverrideUrlLoading(view, url);
                view.loadUrl(url);
                return true;
            }
        };
        webView.setWebViewClient(webViewClient);

        webView.loadUrl(url);

互动界面截图:

 可以在这个模块中评论、反馈意见等。

4.结尾

工程用到的权限:

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

APP演示:

郑重声明:本文章纯属原创,版权归属:深圳市中其信息技术有限公司

如不经过本人公司授权,引用、盗用文章及下载资源,后果自负!

点击下载demohttps://download.youkuaiyun.com/download/getmsg/85037205?spm=1001.2014.3001.5503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

getmsg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值