Android与人人网连接实例:我在听
目前,社交网络概念正火。而手机最初设计的目的正是让人们进行通信。人人网作为中国最大的社交网站,用户数量众多,本文通过一个简单的小程序:“我在听”向大家展示renren api的使用。
首先介绍一下“我在听”。功能:在用户听歌时,在不需要用户进行额外操作的情况下,根据用户正在听的曲目,以发状态的形式同步至人人网。在安装完“我在听”之后,点击使用人人网登录,输入账号密码,登录成功后,选择是否自动同步,如果此时用户打开了网络,那么只要用户通过自带的播放器听歌,就会自动发布状态,例如:我在听张国荣的《倩女幽魂》。
下面开始介绍开发过程;
首先,在人人 api页面http://dev.renren.com/ 里先登录,然后创建一个android应用。填写完表单,创建完成后,可以获得人人给你的唯一标志:
应用ID:xxxxxxx
API Key:xxxxxxxxxxxxxxxxxxxxxxx
Secret Key:xxxxxxxxxxxxxxxxxxxxxx
这三串字符串用于标志你的应用。
下面介绍如何获取用户当前正在听的歌的信息:
当系统默认的播放器开始播放下一首歌时,会发出一个广播(intent中包含歌曲名,艺术家等信息),我们只要定义一个接收这个广播的广播接收器,并且从intent中抽取出需要的信息即可。
AndroidManifest.xml
[html] view plaincopyprint?
1. <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?>
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.renoqiu"
4. android:versionCode="1"
5. android:versionName="1.0" >
6. <uses-sdk android:minSdkVersion="10" />
7. <uses-permission android:name="android.permission.INTERNET" />
8. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
9. <application
10. android:icon="@drawable/ic_launcher"
11. android:label="@string/app_name" >
12. <activity
13. android:name=".IamListenActivity"
14. android:label="@string/app_name" >
15. </activity>
16. <activity
17. android:name=".SettingActivity"
18. android:label="@string/app_name" >
19. <intent-filter>
20. <action android:name="android.intent.action.MAIN" />
21. <category android:name="android.intent.category.LAUNCHER" />
22. </intent-filter>
23. </activity>
24. <receiver android:name=".MusicBroadcastReceiver">
25. <intent-filter>
26. <action android:name="com.android.music.metachanged"></action>
27. </intent-filter>
28. </receiver>
29. <service android:name=".PushStatusService" >
30. <intent-filter>
31. <action android:name="com.renoqiu.pushstatus" />
32. </intent-filter>
33. </service>
34. </application>
35. </manifest>
36. </span>
根据main.xml可知,我们定义了类MusicBroadcastReceiver捕捉action名为com.android.music.metachanged的广播。
src/com/renoqiu/ MusicBroadcastReceiver.java
[java] view plaincopyprint?
1. <span style="font-size:16px;">package com.renoqiu;
2.
3. import android.content.BroadcastReceiver;
4. import android.content.Context;
5. import android.content.Intent;
6. import android.os.Bundle;
7.
8. public class MusicBroadcastReceiver extends BroadcastReceiver {
9. private static final Object SMSRECEIVED = "com.android.music.metachanged";
10. @Override
11. public void onReceive(Context context, Intent intent) {
12. if(intent.getAction().equals(SMSRECEIVED)){
13. String trackName=intent.getStringExtra("track");
14. String artist=intent.getStringExtra("artist");
15.
16. Intent pushStatusIntent = new Intent();
17. pushStatusIntent.setAction("com.renoqiu.pushstatus");
18. Bundle myBundle = new Bundle();
19. myBundle.putString("trackName", trackName);
20. myBundle.putString("artist", artist);
21. pushStatusIntent.putExtras(myBundle);
22. context.startService(pushStatusIntent);
23. }
24. }
25. }
26. </span>
在类MusicBroadcastReceiver中我们抽取了歌曲名和艺术家名,并且调用context.startService()方法创建了一个service。
src/com/renoqiu/ PushStatusService.java
[java] view plaincopyprint?
1. <span style="font-size:16px;">package com.renoqiu;
2.
3. import android.app.Service;
4. import and
补充:移动开发 , Android ,