- 浏览: 325892 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xuanyuanxiaoxue:
...
Android - LayoutInflater -
柴兴博:
不错 多谢
Android 悬浮Activity并可拖动(访悬浮歌词) -
di1984HIT:
写的很好,我收藏一下。
java之动态代理模式(JDK和cglib) -
chinacssnj:
待测试,明天测,测试的结果发给大家
网络开发上传文件到服务器 -
fx_199182:
...
Android之MediaPlayer
1:RingProfile
package com.yarin.android.RingProfile; import java.util.Date; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.TabActivity; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TabHost; import android.widget.TimePicker; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TabHost.OnTabChangeListener; public class RingProfile extends TabActivity { private static final String TAG="RingToggle"; //声明TabHost对象 private TabHost mTabHost; protected boolean isChange; private AlarmManager mAlarmManager; private TimePicker mTimePicker ; private int mTab; private ImageView myImage; private ImageButton downButton; private ImageButton upButton; private ImageButton normalButton; private ImageButton muteButton; private ImageButton vibrateButton; private ProgressBar myProgress; private AudioManager audioMa; private int volume = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost对象 mTabHost = getTabHost(); /* 为TabHost添加标签 */ //新建一个newTabSpec(newTabSpec) //设置其标签和图标(setIndicator) //设置内容(setContent) mTabHost.addTab(mTabHost.newTabSpec("tab_test1") .setIndicator("普通情景模式",getResources().getDrawable(R.drawable.icon)) .setContent(R.id.RadioGroup01)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2") .setIndicator("定时情景模式",getResources().getDrawable(R.drawable.timeprofile)) .setContent(R.id.RelativeLayout01)); mTabHost.addTab(mTabHost.newTabSpec("tab_test3") .setIndicator("自定义情景模式",getResources().getDrawable(R.drawable.addprofile)) .setContent(R.id.AbsoluteLayout03)); //设置TabHost的背景图片资源 mTabHost.setBackgroundResource(R.drawable.bg); //设置当前显示哪一个标签 mTabHost.setCurrentTab(0); mTab = 0; updateRadioGroup(); //初始化,取得AudioManager audioMa = (AudioManager)getSystemService(Context.AUDIO_SERVICE); myImage = (ImageView)findViewById(R.id.myImage); myProgress = (ProgressBar)findViewById(R.id.myProgress); downButton = (ImageButton)findViewById(R.id.downButton); upButton = (ImageButton)findViewById(R.id.upButton); normalButton = (ImageButton)findViewById(R.id.normalButton); muteButton = (ImageButton)findViewById(R.id.muteButton); vibrateButton = (ImageButton)findViewById(R.id.vibrateButton); //标签切换事件处理,setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { if ( tabId.equals("tab_test1") ) { mTab = 0; mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mTimePicker = (TimePicker)findViewById(R.id.timePkr); mTimePicker.setIs24HourView(true); updateRadioGroup(); } else if ( tabId.equals("tab_test2") ) { mTab = 1; mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mTimePicker = (TimePicker)findViewById(R.id.timePkr); mTimePicker.setIs24HourView(true); updateRadioGroup(); } } }); /***************************************************************/ RadioGroup group1 = (RadioGroup) findViewById(R.id.RadioGroup01); group1.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChange) return; switch (checkedId) { case R.id.ring_and_vibrate01: ringAndVibrate(); break; case R.id.ring01: ring(); break; case R.id.vibrate01: vibrate(); break; case R.id.silent01: silent(); break; } RadioButton radio = (RadioButton) findViewById(checkedId); if (radio != null) radio.setTextSize(30); } }); //RadioButton添加监听器 for (int i = 0, l = group1.getChildCount(); i < l; i++) { RadioButton radio = (RadioButton) group1.getChildAt(i); radio.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { RadioButton radio = (RadioButton) v; if (!radio.isChecked()) return false; radio.setTextSize(30); return false; } }); } /***************************************************************/ //添加onChangeListener RadioGroup group2 = (RadioGroup) findViewById(R.id.RadioGroup02); group2.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChange) return; switch (checkedId) { case R.id.ring_and_vibrate02: ringAndVibrate(); break; case R.id.ring02: ring(); break; case R.id.vibrate02: vibrate(); break; case R.id.silent02: silent(); break; } RadioButton radio = (RadioButton) findViewById(checkedId); if (radio != null) radio.setTextSize(30); } }); //RadioButton添加监听器 for (int i = 0, l = group2.getChildCount(); i < l; i++) { RadioButton radio = (RadioButton) group2.getChildAt(i); radio.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { RadioButton radio = (RadioButton) v; if (!radio.isChecked()) return false; radio.setTextSize(30); return false; } }); } //取得手机的初始音量,并初始化进度条 volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); //取得初始模式,并分别设置图标 int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } //降低音量按键 downButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { //adjustVolume可以增加和降低音量 audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); //设置进度条 myProgress.setProgress(volume); //设置图标 int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } } }); //提高音量 upButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { //AudioManager.ADJUST_RAISE提高音量 audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); int mode=audioMa.getRingerMode(); if(mode==AudioManager.RINGER_MODE_NORMAL) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } else if(mode==AudioManager.RINGER_MODE_SILENT) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } else if(mode==AudioManager.RINGER_MODE_VIBRATE) { myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } } }); //正常状态 normalButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.icon)); } }); //静音状态 muteButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_SILENT); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.mute)); } }); //振动状态 vibrateButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { audioMa.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); volume=audioMa.getStreamVolume(AudioManager.STREAM_RING); myProgress.setProgress(volume); myImage.setImageDrawable(getResources() .getDrawable(R.drawable.vibrate)); } }); } // 更新情景模式 protected void updateRadioGroup() { int checkedId = currentMode(); RadioButton checked = (RadioButton) findViewById(checkedId); isChange = true; checked.setChecked(true); isChange = false; } // 取得当前情景模式 protected int currentMode() { AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); switch (audio.getRingerMode()) { case AudioManager.RINGER_MODE_SILENT: if ( mTab == 0 ) { return R.id.silent01; } else { return R.id.silent02; } case AudioManager.RINGER_MODE_VIBRATE: if ( mTab == 0 ) { return R.id.vibrate01; } else { return R.id.vibrate02; } } if (audio.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)) { if ( mTab == 0 ) { return R.id.ring_and_vibrate01; } else { return R.id.ring_and_vibrate02; } } if ( mTab == 0 ) { return R.id.ring01; } else { return R.id.ring02; } } /***************************************************************/ // 铃声和震动 protected void ringAndVibrate() { Intent intent = new Intent(RingBroadcastReceiver.RV_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.ring_and_vibrate01); } else { intent.putExtra("checkedId", R.id.ring_and_vibrate02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // 铃声 protected void ring() { Intent intent = new Intent(RingBroadcastReceiver.RING_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.ring01); } else { intent.putExtra("checkedId", R.id.ring02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // 震动 protected void vibrate() { Intent intent = new Intent(RingBroadcastReceiver.VIBRATE_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.vibrate01); } else { intent.putExtra("checkedId", R.id.vibrate02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // 静音 protected void silent() { Intent intent = new Intent(RingBroadcastReceiver.SILENT_CHANGED); if ( mTab == 0 ) { intent.putExtra("checkedId", R.id.silent01); } else { intent.putExtra("checkedId", R.id.silent02); } PendingIntent alarmIntent = PendingIntent.getBroadcast(this, RingBroadcastReceiver.REQUEST_CODE, intent, 0); Log.e(TAG, "" + intent); mAlarmManager.set(AlarmManager.RTC_WAKEUP, getTime(), alarmIntent); } // 计算切换时间 private long getTime() { Date dateNow = new Date(); long hour = mTimePicker.getCurrentHour() - dateNow.getHours(); long min = mTimePicker.getCurrentMinute() - dateNow.getMinutes(); long second = dateNow.getSeconds(); return dateNow.getTime() + (hour * 60 + min) * 60 * 1000 - second * 1000; } /***********************************************************************************/ }
2:RingBroadcastReceiver
package com.yarin.android.RingProfile; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.util.Log; public class RingBroadcastReceiver extends BroadcastReceiver { private static final String TAG = "RingBroadcastReceiver"; public static final String VIBRATE_CHANGED = "com.yarin.android.RingProfile.VIBRATE_CHANGED"; public static final String SILENT_CHANGED = "com.yarin.android.RingProfile.SILENT_CHANGED"; public static final String RV_CHANGED = "com.yarin.android.RingProfile.RV_CHANGED"; public static final String RING_CHANGED = "com.yarin.android.RingProfile.RING_CHANGED"; public static final int REQUEST_CODE = 0; @Override public void onReceive(Context context, Intent intent) { AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); int checkedId = intent.getIntExtra("checkedId", 0); Log.e(TAG, checkedId + intent.getAction()); // 切换情景模式 switch (checkedId) { case R.id.ring_and_vibrate01: case R.id.ring_and_vibrate02: ringAndVibrate(audio); break; case R.id.vibrate01: case R.id.vibrate02: vibrate(audio); break; case R.id.silent01: case R.id.silent02: silent(audio); break; default: ring(audio); break; } } // 铃声和震动 protected void ringAndVibrate(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); } // 铃声 protected void ring(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); } // 震动 protected void vibrate(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); } // 静音 protected void silent(AudioManager audio) { audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); } }
3:main.xml
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RadioGroup android:id="@+id/RadioGroup01" android:orientation="vertical" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerInParent="true"> <RadioButton android:text="@string/ring_and_vibrate" android:id="@+id/ring_and_vibrate01" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" /> <RadioButton android:text="@string/ring" android:id="@+id/ring01" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> <RadioButton android:text="@string/vibrate" android:id="@+id/vibrate01" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> <RadioButton android:text="@string/silent" android:id="@+id/silent01" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> </RadioGroup> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout01" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="12sp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/help" android:textSize="20px" android:textStyle="bold" android:id="@+id/help"></TextView> <TimePicker android:id="@+id/timePkr" android:layout_below="@id/help" android:layout_width="wrap_content" android:layout_height="wrap_content"></TimePicker> <RadioGroup android:orientation="vertical" android:id="@+id/RadioGroup02" android:layout_below="@id/timePkr" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerInParent="true"> <RadioButton android:text="@string/ring_and_vibrate" android:id="@+id/ring_and_vibrate02" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" /> <RadioButton android:text="@string/ring" android:id="@+id/ring02" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> <RadioButton android:text="@string/vibrate" android:id="@+id/vibrate02" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> <RadioButton android:text="@string/silent" android:id="@+id/silent02" android:layout_width="fill_parent" android:textSize="24sp" android:paddingLeft="50sp" android:paddingRight="50sp" /> </RadioGroup> </RelativeLayout> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/AbsoluteLayout03" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/myText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="情景模式:" android:textSize="16sp" android:layout_x="20px" android:layout_y="42px"> </TextView> <ImageView android:id="@+id/myImage" android:layout_width="48px" android:layout_height="48px" android:layout_x="110px" android:layout_y="32px"> </ImageView> <TextView android:id="@+id/myText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="声音音量:" android:textSize="16sp" android:layout_x="20px" android:layout_y="102px"> </TextView> <ProgressBar android:id="@+id/myProgress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="160dip" android:layout_height="wrap_content" android:max="7" android:progress="5" android:layout_x="110px" android:layout_y="102px"> </ProgressBar> <ImageButton android:id="@+id/downButton" android:layout_width="100px" android:layout_height="100px" android:layout_x="50px" android:layout_y="162px" android:src="@drawable/down"> </ImageButton> <ImageButton android:id="@+id/upButton" android:layout_width="100px" android:layout_height="100px" android:layout_x="150px" android:layout_y="162px" android:src="@drawable/up"> </ImageButton> <ImageButton android:id="@+id/normalButton" android:layout_width="60px" android:layout_height="60px" android:layout_x="50px" android:layout_y="272px" android:src="@drawable/icon"> </ImageButton> <ImageButton android:id="@+id/muteButton" android:layout_width="60px" android:layout_height="60px" android:layout_x="120px" android:layout_y="272px" android:src="@drawable/mute"> </ImageButton> <ImageButton android:id="@+id/vibrateButton" android:layout_width="60px" android:layout_height="60px" android:layout_x="190px" android:layout_y="272px" android:src="@drawable/vibrate"> </ImageButton> </AbsoluteLayout> </FrameLayout> </LinearLayout> </TabHost>
4:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yarin.android.RingProfile" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".RingProfile" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="RingBroadcastReceiver"> <intent-filter> <action android:name="com.yarin.android.RingProfile.RV_CHANGED" /> <action android:name="com.yarin.android.RingProfile.RING_CHANGED" /> <action android:name="com.yarin.android.RingProfile.VIBRATE_CHANGED" /> <action android:name="com.yarin.android.RingProfile.SILENT_CHANGED" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="5" /> </manifest>
发表评论
-
Android中AsyncTask的简单用法
2012-01-13 16:00 1128在开发Android移动客户端的时候往往要使用多线程来进行操 ... -
Android应用的自动升级、更新模块的实现 .
2011-11-16 14:01 650http://www.eoeandroid.com/threa ... -
一个APK反编译利器Apktool
2011-11-16 13:54 1560一个APK反编译利器Apktool APK 本地化 ... -
自定义Android标题栏TitleBar布局
2011-11-14 14:13 1220很多网友发现自己Android程序的标题栏TitleBar区域 ... -
Android GPS获取地理位置 .
2011-11-14 14:11 831import android.app.Activity; i ... -
android ListView详解
2011-11-14 13:48 1026在android开发中ListView是比较常用的组件,它以列 ... -
Android之Content provider 详解
2011-11-14 13:35 2438Android是如何实现应用程序之间数据共享的?一个应用程序可 ... -
Android源码地址
2011-11-12 19:14 1029http://blog.csdn.net/ilittleone ... -
android之File
2011-11-11 22:39 19731:Fileservice package cn.itcas ... -
Android知识补漏
2011-11-09 22:33 01:AndroidManifiest.xml < ... -
深入剖析Android消息机制
2011-11-09 14:13 938在Android中,线程内部或者线程之间进行信息交互时经常会使 ... -
Android之Handler详解(四)
2011-11-09 14:00 1265d、自己创建新的线程,然后在新线程中创建Looper,主线程调 ... -
Android之Handler详解(三)
2011-11-09 13:58 1353c、将消息队列绑定到子线程上,主线程只管通过Handl ... -
Android之Handler详解(二)
2011-11-09 13:54 1638二:sendMessage版本的Handl ... -
Android之Handler详解(一)
2011-11-09 13:22 2270一个Handler允许你发送和处理消息(Message)以及 ... -
关于StartActivityForResult方法的使用
2011-10-31 17:11 1061根据方法名可知 这个方法是要得到启动后的Activity返回的 ... -
Android 悬浮Activity并可拖动(访悬浮歌词)
2011-10-24 16:23 2059天天动听, 这款Android手机上的音乐播放器,相信不少朋友 ... -
Android GWES
2011-10-24 16:13 1162第八章 Android GWES 8.1 View Syst ... -
Android系统服务-WindowManager
2011-10-24 16:10 1418WindowManager是Android中一个重要的服务 ... -
http通信
2011-10-15 17:31 1071HTTP(HyperText Transfer Proto ...
相关推荐
android蓝牙开发---与蓝牙模块进行通信.pdfandroid蓝牙开发---与蓝牙模块进行通信.pdfandroid蓝牙开发---与蓝牙模块进行通信.pdfandroid蓝牙开发---与蓝牙模块进行通信.pdfandroid蓝牙开发---与蓝牙模块进行通信.pdf...
android-support-v4-v7-v13-v14-v17(官方最新完整版),官方最新版的,压缩包内包含android-support-v4、android-support-v7-appcompat,android-support-v7-cardview,android-support-v7-gridlayout,android-support-...
Android--开发--LumaQQ-Android--开发-- qq 代码
Android--开发--AnderWeb-Android--开发--_packages_apps_Launcher-4458ee4
android系统开发--HAL层开发基础
Android--开发--【eoeAndroid--开发--特刊】第18期:Android--开发--音视频的编解码
安卓开发之串口通信android-serialport-api-master,虽然是从Github上面下载下来的,但是从下载到使用还是有很多问题,其中之一就是由于该api是今年前开发出来的,sdk版本过低导致现在的eclipse不能直接使用,关于此...
Android串口开发(android-serialport-api开发)工程实例。SerialPortUtil里面有我常用的转换工具(16进制字符串转二进制字符串并补位、二进制字符串转16进制字符串并补位)
将android-17.zip解压到 Android\android-sdk\platforms 文件夹下。
最新android studio 2015/10/12日更新 2015/10/12 android-studio-bundle-141.2288178-windows
android-support-v7-preference.jar
Android开发三剑客-UML、模式与测试,挺有趣的资料
ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar 要是需要最新的,下载地址: http://code.google.com/p/ksoap2-android/
Android开发--仿微信语音对讲录音,按住讲话进行录音,向上滑动可以进行取消录音。
asmack-android-8-4.0.7jar 2015-02-20更新,现在asmack已经托管到github上,费了很长时间才找到,在这里分享给大家
Android基础---开发流程
android-support-v4.jar support-v13.jar support-v7-gridlayout.jar 全架包
android-support-multidex解决Android Dex 65536 65k问题,解决方案来自严振杰的博客:http://blog.csdn.net/yanzhenjie1003/article/details/51818269
Android自定义控件---联系人列表A-Z排序 此demo的博客地址:http://blog.csdn.net/u012814441
将android-18解压到Android\android-sdk\platforms下。