当前位置:阳光沙滩 >Android > 查看文章
阿里云优惠码

1.android开发喜马拉雅项目专题篇

有了前面的知识,我们已经可以开发一个小项目了,接下来的篇目中,我们开发一个喜马拉雅的项目。

喜马拉雅的讨论帖>>>

同学们可以学习到什么呢?

一个项目的流程,里面的一些控件,使用第三方的sdk。

1.1.设备要求

手机:最好有物理手机不用模拟器开发,因为里面的so库跟平台有关系,如果用arm模拟器的话,速度会比较慢。

电脑:开发这么久了,没什么要求了,配置高一点就好

 

1.2.开发流程

2018-10-10_154753

研发人员需要参与的过程有:

 

产品设计阶段的技术预研:这个阶段,产品经理为了达到目的实现功能,需要开发人员的帮助,去验证,或者去研究一些技术功能。

编码过程:编码的话这个套不掉啦,这个部分其实还可以细分的呢。比如说,设计–>讨论—>编码—>reviewCode。

解bug:自己挖的坑,那肯定得自己填一下。

 

1.3.集成喜马拉雅的SDK

我们想要获取到喜马拉雅的内容,那么就要集成喜马拉雅的sdk,这样子才可以请求到喜马拉雅的内容。

1.3.1.创建项目

这个不多说了,同学们都会创建项目的了吧!都学习到今天啦!

1.3.2.下载喜马拉雅的sdk

喜马拉雅的开发者网站地址:open.ximalaya.com

不用注册了,也不用创建应用。因为创建以后,创建应用是要提交营业执照的,但是不影响我们的开发。

我们直接下载http://open.ximalaya.com/doc/mobile-sdk

2018-10-10_173357

下载下来以后解压:

2018-10-10_173456

我们很有必要把里面的demo跑来。

前面我们说了,没有开发密钥和应用id怎么办呢?我们用的是demo里的密钥和appKey

1.3.3.跑起喜马拉雅demo

2018-10-10_173456

这里面有个demo,我们用Android studio打开,如果遇到问题,请发帖子吧>>>喜马拉雅专题>>>

screenshot-1539165547163

 

把demo跑起来以后,就跟上面一样了。

为什么我要让大家把demo跑起来呢?

demo的代码是开源的,我们可以阅读api的使用方法,另外一个就是可以使用里面的密钥和appID

2018-10-10_180054

2018-10-10_180133

以上这些内容,我们后面配置我们的项目用得上。

1.3.4.复制代码,拷贝jar包,so库咯

2018-10-10_181033

创建一个Application类,继承自Application,不要忘记配置AndroidManifest.xml文件,配置一个Application,否则是起不来了。

配置权限

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

然后呢复制相关的库

2018-10-10_193411

把下载到的库文件复制到项目的lib里面,如上。

修改gradle文件,告诉gradle构建系统我们的jnilib在哪里。

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

添加到android节点下面,如图:

2018-10-10_193534

怎么判断是否有配置成功呢?

两个方面

1、结构如图:

2018-10-10_193620

2、写程序程序发起请求吧!

1.4.测试SDK配置

我们配置完以后,需要测试一下配置是否有问题,最简单的方法,就是去请求一下喜马拉雅的数据。

以上的步骤,都是结合文档去操作的,这个文档是我们下载的发文档里的:

2018-10-10_173456

喜马拉雅SDK接入文档.html

这里我们举个例子,去获取喜马拉雅的所有分类:

2018-10-10_193914

、

package com.sunofbeaches.himalaya;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;

import com.ximalaya.ting.android.opensdk.datatrasfer.CommonRequest;
import com.ximalaya.ting.android.opensdk.datatrasfer.IDataCallBack;
import com.ximalaya.ting.android.opensdk.model.category.Category;
import com.ximalaya.ting.android.opensdk.model.category.CategoryList;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestActivity extends Activity {

    private static final String TAG = "TestActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Map<String, String> map = new HashMap<>();
        CommonRequest.getCategories(map, new IDataCallBack<CategoryList>() {
            @Override
            public void onSuccess(@Nullable CategoryList categoryList) {
                List<Category> categories = categoryList.getCategories();
                if (categories != null) {
                    for (Category category : categories) {
                        Log.d(TAG, "category -- > " + category.getCategoryName());
                    }
                }
            }

            @Override
            public void onError(int i, String s) {
                Log.d(TAG, "error code is -- > " + i + " error msg -- >" + s);
            }
        });
    }
}

把这个Activity配置成启动的Activity,然后运行起来,结果如下:

2018-10-10_194520

说明我们已经配置成功了,可以跟喜马拉雅的服务器通讯了。

2.集中精力到喜马拉雅项目的开发上

完成了前面的配置,我们已经可以请求到喜马拉雅服务器的数据了,接下来就按我们的交互去开发了。

这里我没有做交互,我直接做了效果图

2018-10-10_201834

 

其实整个喜马拉雅分成,几大模块去写即可:

2018-10-10_202437

页面关系流程:

2018-10-10_203151

下面我们就分来来写几个模块吧。

我们约定一下:

网络请求,我们不需要处理,因为SDK已经处理好了,我们直接使用SDK的api方法即可,把回调 接口传进去即可有结果,成功了还是失败了,可以从回调中看到,就像我们前面的测试例子一样。

图片显示:我们可以用gride,可以用毕加索,其他也可以。

3.主界面

主界面我们有一个导航栏(推荐,订阅,历史),我们可以使用开源框架,这里推荐使用:

https://github.com/hackware1993/MagicIndicator

如果不会用的同学,可以去看我们录制的视频。

这些都不是难点,这个界面我们使用RecyclerView即可展示数据。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:orientation="horizontal">

        <net.lucode.hackware.magicindicator.MagicIndicator
            android:id="@+id/magic_indicator"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="@color/colorAccent"/>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@color/colorAccent">

            <ImageView
                android:layout_width="18dp"
                android:layout_height="17dp"
                android:layout_centerInParent="true"
                android:src="@mipmap/search_icon"/>

        </RelativeLayout>


    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dp"
        android:layout_marginTop="40dp"
        android:overScrollMode="never"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="#D8D8D8">

    </LinearLayout>

</RelativeLayout>

布局如上,这里面对于初学者来说难点是什么呢?

第一个是结果的处理:有多种状态,请求成功,无网络,内容为空,内容加载中

第二个是刷新的问题,android绝大多数的应用都有刷新。刷新又分为下拉加载,上拉刷新,思想是一样的。也就是说,学会了一套,怎么刷新都可以。

4.详情界面

详情界面UI效果图如下:

//TODO:

7K
为您推荐
各种观点