android 源码 Music 学习过程(随笔版)(ing)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.01.10 下午

整体分析:

由一个包,27个文件组成。

其中有7个activity分别由7个文件组成,其中一个activity是以dialog形式显示,它们是:

1. MusicBrowserActivity.java

程序的入口,由四个tab组成:browse_menu艺术家,albums_menu专辑,tracks_menu歌曲,playlists_menu播放列表

2.ArtistAlbumBrowserActivity.java

艺术家界面

3.AlbumBrowserActivity.java

专辑界面

4.TrackBrowserActivity.java

歌曲界面

5. PlaylistBrowserActivity.java

播放列表界面

6. MediaPlaybackActivity.java

正在播放界面

7.CreatePlayList.java

新建播放列表界面,一dialog的形式显示

遇到的问题

1. 什么是TAB,以及TAB相关的知识?

解: google一下得:

tab 其实是一个选线选项卡布局,依托于TabHost

。。。。。。

TabHost 对象用TabActivity.getTabHost()获取。

暂时先了解这么些吧。。。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.01.11 下午

1.android通讯机制 AIDL

一、在同一包下建一后缀为aidl文件,

内容有引入所在的包,定义一个名称和文件名相同的接口,

接口里写明要提供服务的方法,并给参数注明in 还是out

二、 在同一包下建一继承service类的类,实现aidl里的所有方法

三、在AndroidManifest.xml 文件中注册 service

形如:

<service android:name="TestService" android:process=":remote" >
        <intent-filter>
            <action android:name="com.bravewly.ITestService" />
        </intent-filter>
    </service>


然后就可以调用了,基本上就是这个流程。




---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.02.03 下午


重新从入口类,即,MusicBrowserActivity.java 分析Music。

看完该类后,简要总结一下该类的作用:

1. 该 Activity 其实没有自己的view显示,

主要是通过调用 MusicUtil.java 的 activateTab(Activity, int) 方法选择启动哪一个Activity

    static void activateTab(Activity a, int id) {
        Intent intent = new Intent(Intent.ACTION_PICK);
        switch (id) {
            case R.id.artisttab:
                intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/artistalbum");
                break;
            case R.id.albumtab:
                intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/album");
                break;
            case R.id.songtab:
                intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track");
                break;
            case R.id.playlisttab:
                intent.setDataAndType(Uri.EMPTY, MediaStore.Audio.Playlists.CONTENT_TYPE);
                break;
            case R.id.nowplayingtab:
                intent = new Intent(a, MediaPlaybackActivity.class);
                a.startActivity(intent);
                // fall through and return
            default:
                return;
        }
        intent.putExtra("withtabs", true);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// 参数含义是:如果所要启动的activity已经启动,
                                                        // 则finish掉其上的所有activity
        a.startActivity(intent);
        a.finish();

        /*
         *     该方法必须用于startActivity 和 finish 方法之后。
         *  该方法作用:第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果
         */ 
        a.overridePendingTransition(0, 0);		
    }
分析时遇到的问题:见代码注释


2. 连接


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.03.01 下午

PS: 时间过的可真快,转眼间已经是13年的三月份了。。。继续更新。。。


刚刚分析delete原理的时候,碰到了一个新方法:

this.getResource().getQuantityString(int id, int quantity, Object... formatArgs) 

其中id对应的是xml里的资源

quantity 则是一个int数值,

object 是参数的类型

对应的xml内容举例如下:

    <plurals name="NNNtracksdeleted">
        <!-- delete confirmation message for 1 song -->
        <item quantity="one">1 song was deleted.</item>
        <!-- delete confirmation message for 0 or more than 1 songs -->
        <item quantity="other"><xliff:g id="songs_to_delete">%d</xliff:g> songs were deleted.</item>
    </plurals>

如果quantity = 1 则对应返回的string就是 1 song was deleted. 

否则就是“other”所对应的内容。

当然,quantity的值还有“two”  "three" "zero"















                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值