谁有校园通或类似的安卓源代码下载码???!!!求帮助啊!!!!!

谁有 空间妙赞软件 安卓的 源码 软件也行没有尾巴的 联系我_百度知道
谁有 空间妙赞软件 安卓的 源码 软件也行没有尾巴的 联系我
这类软件的话,你可以下载一个空间秒赞助手!这个软件我自己之前有用过的,还是可以的呢!软件你在应用宝上面就可以下载到了,它里面软件很齐全的!在手机桌面上打开应用宝(木有先安装),进入软件后,搜索你的软件,找到就可以下载!在电脑PC端也可以下载手机的软件,打开PC端应用宝,连接数据线,就可以直接安装软件到手机的!
其他类似问题
为您推荐:
安卓的相关知识
其他3条回答
我们这个世界,从不会给一个伤心的落伍者颁发奖牌。
下载一个空间点赞助手就好了
百度一下就知道了可以下载
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁涉及模块技术,多线程,百度地图,意见反馈,用户投诉,登录注册,在线更新等模块功能。
排序算法,需要的可以学习学习!!
//冒泡排序算法
static void bubbleSort(int[] a){
本Demo,向大家介绍带图片伸缩工具栏,下面是程 ...
涉及模块技术,多线程,百度地图,意见反馈,用户投诉,登录注册,在线更新等模块功能。
本Demo,向大家介绍带图片伸缩工具栏 ...
一个自定义音乐播放器的界面,效果还是很不 ...
看效果图还是很棒 ...
下面的Demo中,主要向大家讲解文字飞入 ...
ListView在各类程序中,具有数据显示直观,操 ...
webView播放网络视频,全屏播放等,效果还 ...
本Demo,向大家介绍带图片伸缩工具栏,下面是程序的效果图和源代码,需要的可以下载下来看看哦!!
一个自定义音乐播放器的界面,效果还是很不错的!!
看效果图还是很棒的吧,带三角箭头的水平ListView,下面是程序的原代码,需要的可以下载下来看看哦!
下面的Demo中,主要向大家讲解文字飞入飞出的效果,下面有程序的源代码和效果图,需要的可以下载下来看看哦!
ListView在各类程序中,具有数据显示直观,操作方便的特点!下面我们来看一个个性的ListView,需要的可以下载看看哦!下面是程序的效果图和源代码!亲,快来下载吧!
友情链接友情链接本站要求: PR&=3,百度收录1000以上
Powered by【图文】Android毕业论文-校园通软件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Android毕业论文-校园通软件
A​n​d​r​o​i​d​毕​业​论​文​-​校​园​通​软​件
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢12590人阅读
&&&&&&&& 现在咱们来聊聊android系统中铃声的播放,从framework层面说说Ringtone的播放原理,我在android源码中碰到了播放系统铃声中的问题,所以仔细研究了这方面的知识,现在整理一下,给读者一些帮助,现在我对铃声的播放和设置特别亲切,不管是短信铃声方面的,来电铃声,还是日历铃声,email的铃声,闹钟的铃声,都能解决铃声方面的bug。前面我说了Notification的播放机制,&大概给大家说了说,有想了解的可以参考看一看。铃声播放的机制都是用MediaPlayer来播放的,通过MediaPlayer来申请AudioManager机制来播放音乐铃声的。前面我写了个调用系统铃声和sdcard卡中铃声的demo,这个例子中有一段代码:通过intent的action来启动一个选择系统铃声的dialog,这个到底是启动的哪儿的dialog,今天给大家揭秘一下,希望给大家带来点帮助:大明原创,转载请标明出处:&&&&& 写一个intent来启动播放ringtone的activity:&&& Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
// Allow user to pick 'Default'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
// Show only ringtones
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
//set the default Notification value
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
// Don't show 'Silent'
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
startActivityForResult(intent, SMS_RINGTONE_PICKED);
这个activity启动后就跑到了framework的com.android.internal.app.RingtonePickerActivity里面去了,在framework部分也可以写activity类得,这个挺有意思的,哈哈,新发现,有种“山穷水复疑无路,柳暗花明又一村”的感觉!哈哈,这个intent的action发到哪儿去了呢??&&&&&&&&&&& 在frameworks\base\core\res\AndroidManifest.xml中可以搜到这个action:&&&&
&activity android:name=&com.android.internal.app.RingtonePickerActivity&
android:theme=&@style/Theme.Dialog.Alert&
android:excludeFromRecents=&true&
android:multiprocess=&true&&
&intent-filter&
&action android:name=&android.intent.action.RINGTONE_PICKER& /&
&category android:name=&android.intent.category.DEFAULT& /&
&/intent-filter&
&/activity&&action android:name=&android.intent.action.RINGTONE_PICKER& /&这个就是接受这个intent的action动作的对应的activity的类,找这个RingtonePickerActivity.java类,这个类的继承和实现有点特殊,注意观察:public final class RingtonePickerActivity extends AlertActivity implements
AdapterView.OnItemSelectedListener, Runnable, DialogInterface.OnClickListener,
AlertController.AlertParams.OnPrepareListViewListener这个类继承AlertActivity并实现了这么多接口,找到点击每个选项播放的方法监听:
private DialogInterface.OnClickListener mRingtoneClickListener =
new DialogInterface.OnClickListener() {
* On item clicked
public void onClick(DialogInterface dialog, int which) {
// Save the position of most recently clicked item
mClickedPos =
// Play clip
playRingtone(which, 0);
然后找到playRingtone(which, 0);这个方法去: private void playRingtone(int position, int delayMs) {
mHandler.removeCallbacks(this);
mSampleRingtonePos =
mHandler.postDelayed(this, delayMs);
}这个postDelayed(this, delayMs);this代表当前对象,因为这个类是实现了Runnable接口,所以这时候会走到run方法中去: public void run() {
if (mSampleRingtonePos == mSilentPos) {
mRingtoneManager.stopPreviousRingtone();
* Stop the default ringtone, if it's playing (other ringtones will be
* stopped by the RingtoneManager when we get another Ringtone from it.
* by bw on start
* when it`s not null set the default ringtone is null
* modify by wangxianming in
if (mDefaultRingtone != null) {
if(mDefaultRingtone.isPlaying()){
mDefaultRingtone.stop();
mDefaultRingtone =
if (mSampleRingtonePos == mDefaultRingtonePos) {
if (mDefaultRingtone == null) {
mDefaultRingtone = RingtoneManager.getRingtone(this, mUriForDefaultItem);
ringtone = mDefaultR
* Normally the non-static RingtoneManager.getRingtone stops the
* previous ringtone, but we're getting the default ringtone outside
* of the RingtoneManager instance, so let's stop the previous
* ringtone manually.
mRingtoneManager.stopPreviousRingtone();
ringtone = mRingtoneManager.getRingtone(getRingtoneManagerPosition(mSampleRingtonePos));
if (ringtone != null) {
ringtone.play();
}这时候找到这里就基本上找到根源了,ringtone.play();就是播放ringtone音乐的方法;注意:15行,16行,我对源码进行了修改,这个有点问题,源码对原生态的音乐格式支持的很好,但是对mid格式的音乐支持的不太好,所以如果播放mid格式的音乐不能用多个mediaplayer来播放,只能用一个来播放,只能hold住一个,不能重复hold这个ringtone,所以把这个mDefaultRingtone =每次都置为空,这样每次都是一个对象就可以了。这样播放系统铃声就没有问题了!&&&&&&& 再去frameworks\base\media\java\android\media\Ringtone.java这个类去找到play()方法:&&&public void play() {
if (mAudio == null) {
openMediaPlayer();
} catch (Exception ex) {
Log.e(TAG, &play() caught &, ex);
if (mAudio != null) {
// do not ringtones if stream volume is 0
// (typically because ringer mode is silent).
if (mAudioManager.getStreamVolume(mStreamType) != 0) {
if (mIsLoop){
mAudio.setLooping(true);
mAudio.start();
找到openMediaPlayer()方法&:private void openMediaPlayer() throws IOException {
mAudio = new MediaPlayer();
if (mUri != null) {
mAudio.setDataSource(mContext, mUri);
} else if (mFileDescriptor != null) {
mAudio.setDataSource(mFileDescriptor);
} else if (mAssetFileDescriptor != null) {
// Note: using getDeclaredLength so that our behavior is the same
// as previous versions when the content provider is returning
// a full file.
if (mAssetFileDescriptor.getDeclaredLength() & 0) {
mAudio.setDataSource(mAssetFileDescriptor.getFileDescriptor());
mAudio.setDataSource(mAssetFileDescriptor.getFileDescriptor(),
mAssetFileDescriptor.getStartOffset(),
mAssetFileDescriptor.getDeclaredLength());
throw new IOException(&No data source set.&);
mAudio.setAudioStreamType(mStreamType);
mAudio.prepare();
}这样就把所有的ringtone播放的机制大致能搞清楚了!希望这个流程给大家一些启发!有问题的可以留言,我看到会给出解释的,希望高手指点不足之处!大明原创。&
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:758759次
积分:8506
积分:8506
排名:第997名
原创:88篇
评论:1644条
AndroidQQ群一:; AndroidQQ群二:; AndroidQQ群三:;
文章:38篇
阅读:363257
(1)(1)(1)(2)(1)(1)(1)(1)(1)(2)(1)(1)(1)(1)(1)(2)(3)(1)(2)(2)(2)(4)(4)(1)(4)(6)(7)(14)(5)(9)(8)4968人阅读
&&&&&&&&&&&&&&& 前段时间处理android音乐文件信息,上网查资料发现Android系统自己提供了MediaScanner,MediaProvider,MediaStore等接口并且提供了一套数据库表格,通过 Content Provider的方式把内容共享给用户。说明一下【Android数据是私有的】可以通过Content Provider的方式共享数据,前面我大致介绍了这个Content Provider,。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如
audio,video,图片等,将相应的信息放到定义好的数据库表格中。如果不插拔手机内存卡,如果把相应的音乐文件删除或移到别的文件夹中,系统就不会自动扫描手机内存卡,查询的Cursor对象存在,但是cursor.getCount()的值为0。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。MediaStore中定义了一系列的数据表格,(这个数据表格是android系统自己建立的,我们不用关心如何建立,我们关心如何使用就可以了!)通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。
&&&&&&& 先来了解一下ContentResolver的查询接口,和sqlite数据库查询的方法是一样的
通过&query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);&得到一个Cursor对象,这个Cursor对象中有数据库字段对应相应的音乐的信息:&&&&&&&
&&&&&&& Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。
& && &&&Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
& && &&&selection: 指定查询条件
& && &&&selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
& && &&&SortOrder:指定查询结果的排列顺序
下面的命令将返回所有在外部存储卡上的音乐文件的信息:
&&&&&&&&先得到一个ContentResolver对象:ContentResolver cr = this.getContentResolver();
&&&&&&&&Cursor cursor = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,&&
&&&&&&&&&&&&&&&&&&& null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:
&&&&&&&&&&&歌曲ID:MediaStore.Audio.Media._ID&
&&&&&&&&& int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));&&
&&&&&&&&& 歌曲的名称 :MediaStore.Audio.Media.TITLE
&&&&&&&&& String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));&&
&&&&&&&&& 歌曲的专辑名:MediaStore.Audio.Media.ALBUM
&&&&&&&&& String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));&&
&&&&&&&&& 歌曲的歌手名: MediaStore.Audio.Media.ARTIST
&&&&&&&&& String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));&&
&&&&&&&&& 歌曲文件的路径 :MediaStore.Audio.Media.DATA
&&&&&&&& String dataurl = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));&&
&&&&&&&& 歌曲的总播放时长 :MediaStore.Audio.Media.DURATION
&&&&&&&& int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));&&
&&&&&&&& 歌曲文件的大小 :MediaStore.Audio.Media.SIZE&
&&&&&&&&&long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));&
&&&&&下面看我写的小程序的截图:
&&&&&&&&&&&&&&&&&&
程序的开始界面:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 点击button按钮后的界面:
&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&& &
&&&&&&&&&&&&&&&&&&&&&&& 点击选择曲目后的界面:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&点击情歌后的界面:
&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&
下面看代码:在NotificationActivity工程下面
在.daming包下的NotificationActivity.java的代码:
import android.app.A
import android.content.ContentR
import android.content.I
import android.database.C
import android.net.U
import android.os.B
import android.provider.MediaS
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
public class NotificationActivity extends Activity {
Button mButton2;
private TextView textview3;
private static final int MUSIC_PICKED = 3;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview3 = (TextView)findViewById(R.id.textview3);
mButton2 = (Button)findViewById(R.id.button2);
mButton2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT);
innerIntent.setType(&audio/*&);
innerIntent.setType(&audio/mp3&);
innerIntent.setType(&audio/midi&);
Intent wrapperIntent = Intent.createChooser(innerIntent, null);
startActivityForResult(wrapperIntent, MUSIC_PICKED);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
String mCustomRingtone =
if(requestCode == MUSIC_PICKED){
Uri pickedUri = data.getData();
if (pickedUri != null)
mCustomRingtone = pickedUri.toString();
ContentResolver cr = this.getContentResolver();
Cursor cursor = cr.query(pickedUri, null, null, null, null);
cursor.moveToFirst();
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
textview3.setText(&mCustomRingtone:&+mCustomRingtone+
&\n\n pickedUri.getPath()=& +pickedUri.getPath() +
&\n\n file url =&+url+
&\n\n file title=&+title+
&\n\n file singer = &+artist+
&\n\n music duration=&+duration+
&\n\n file size=&+size);
textview3.setText(&null:&);
在layout包下的main.xml中的代码:
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&vertical&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:id=&@+id/textview&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:gravity=&center_horizontal&
android:layout_marginTop=&20dip&
android:text=&@string/hello&
android:id=&@+id/button2&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:layout_marginTop=&20dip&
android:text=&调用内存卡铃声&
android:id=&@+id/textview3&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
android:layout_marginTop=&20dip&
&/LinearLayout&
在res下的string.xml中的代码:
&?xml version=&1.0& encoding=&utf-8&?&
&resources&
&string name=&hello&&大明原创,音乐信息&/string&
&string name=&app_name&&NotificationApp&/string&
&/resources&
有问题的可以留言,欢迎大家点评,以纠正错误!
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:758761次
积分:8506
积分:8506
排名:第997名
原创:88篇
评论:1644条
AndroidQQ群一:; AndroidQQ群二:; AndroidQQ群三:;
文章:38篇
阅读:363257
(1)(1)(1)(2)(1)(1)(1)(1)(1)(2)(1)(1)(1)(1)(1)(2)(3)(1)(2)(2)(2)(4)(4)(1)(4)(6)(7)(14)(5)(9)(8)

我要回帖

更多关于 安卓源代码 的文章

 

随机推荐