«

2015高职院校移动互联网应用软件开发赛准备小结

时间:2024-3-2 17:31     作者:韩俊     分类: Android



1.系统设计(略)

2.程序排错(略)

3.功能编码(可以整理)

Ui布局 (简单的 拖动布局)

网络通信(JSON)

正常流程:根据接口去http请求,得到JSON,发送Handler, 接收数据反映到界面。

通用的post请求

/**
     * 通用的post请求
     * 
     * @param url
     *            接口地址
     * @param params
     *            传参数和值的map集合
     * @return json 字符串
     */
    public static String generalPost(String url, Map<String, String> params) {
        HttpPost request = new HttpPost(url);
        // 创建HTTP POST请求
        try {
            JSONObject jsonRequest = new JSONObject();
            if (params != null) {
                for (String key : params.keySet()) {
                    jsonRequest.put(key, params.get(key));
                }
            }
            // map-->json-->stringentity
            StringEntity se = new StringEntity(jsonRequest.toString());
            request.setEntity(se);
            HttpResponse httpResponse = new DefaultHttpClient()
                    .execute(request);
            String retSrc = EntityUtils.toString(httpResponse.getEntity());
            return retSrc;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
/**
     * 通用JSON解析
     * 
     * @param jsonString   JSON数据
     * 
     * @param keyString  返回key
     *            
     * @return
     */
    public String backJson(String jsonString, String keyString) {
        String val = null;
        try {
            JSONObject jsonResponse = new JSONObject(jsonString);
            val = jsonResponse.getString(keyString);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return val;
    }

内容推送(Notification)

/**
     * 在状态栏显示通知
     * 
     * 加权限 <uses-permission android:name="android.permission.VIBRATE" />
     * 
     */
    private void showNotification() {
        // 创建一个NotificationManager的引用
        NotificationManager notificationManager = (NotificationManager) this
                .getSystemService(android.content.Context.NOTIFICATION_SERVICE);

        // 定义Notification的各种属性
        Notification notification = new Notification(R.drawable.ic_launcher,
                "测试系统", System.currentTimeMillis());
        // FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
        // FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
        // FLAG_ONGOING_EVENT 通知放置在正在运行
        // FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应
        notification.flags |= Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中
        notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
        // DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
        // DEFAULT_LIGHTS 使用默认闪光提示
        // DEFAULT_SOUNDS 使用默认提示声音
        // DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission
        notification.defaults = Notification.DEFAULT_LIGHTS;
        // 叠加效果常量
        // notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
        notification.ledARGB = Color.BLUE;
        notification.ledOnMS = 5000; // 闪光时间,毫秒

        // 设置通知的事件消息
        CharSequence contentTitle = "测试系统标题"; // 通知栏标题
        CharSequence contentText = "测试系统内容"; // 通知栏内容
        Intent notificationIntent = new Intent(MainActivity.this,
                MainActivity.class); // 点击该通知后要跳转的Activity
        PendingIntent contentItent = PendingIntent.getActivity(this, 0,
                notificationIntent, 0);
        notification.setLatestEventInfo(this, contentTitle, contentText,
                contentItent);

        // 把Notification传递给NotificationManager
        notificationManager.notify(0, notification);
    }

    // 删除通知
    private void clearNotification() {
        // 启动后删除之前我们定义的通知
        NotificationManager notificationManager = (NotificationManager) this
                .getSystemService(NOTIFICATION_SERVICE);
        notificationManager.cancel(0);

    }


数据图表展现(折线图)

android画图 常用的是第三方常用的开源类库,例子:点击打开链接, 非常简单好用。但是估计比赛时,不一定会给开源jar包,所以得自己画图,比较复杂 例子:点击打 开链接

本地数据库(Sqlite)

//打开或创建test.db数据库
            SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);
            db.execSQL("DROP TABLE IF EXISTS person");
            //创建person表
            db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");
            //实体类
            Person person = new Person();
            person.name = "john";
            person.age = 30;
            //插入数据
            db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age});
            //添加、更新和删除
//          db.executeSQL(String sql);
//          db.executeSQL(String sql, Object[] bindArgs);//sql语句,然后第二个参数是实际的参数集         
            //查询数据
            Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"});
            while (c.moveToNext()) {
                int _id = c.getInt(c.getColumnIndex("_id"));
                String name = c.getString(c.getColumnIndex("name"));
                int age = c.getInt(c.getColumnIndex("age"));
                Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);
            }
            c.close();

            //关闭当前数据库
            db.close();

标签: android

热门推荐