1、Android从网上下载文件
URL url=null;
try {
url = new URL("http://192.168.1.100/Test/111.mp3");
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection();
BufferedInputStream bis = new BufferedInputStream(urlConn
.getInputStream());
FileOutputStream fos = new FileOutputStream(
Environment.getExternalStorageDirectory().getName()+
"\\music\\6.mp3");
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buf = new byte[3 * 1024];
int result = bis.read(buf);
while (result != -1) {
bos.write(buf, 0, result);
result = bis.read(buf);
}
bos.flush();
bis.close();
fos.close();
bos.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
<uses-permission android:name="android.permission.INTERNET"/><!--访问网络-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--访问sd卡-->
2、android实现多线程
package cd.edu.app;
import android.app.Activity;
import android.os.Bundle;
import android.os.HandlerThread;
import android.os.Message;
import cn.edu.subclass.MyHandler;
public class AndroidThreadActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
HandlerThread handThread=new HandlerThread("app");
handThread.start();
MyHandler myHand=new MyHandler(handThread.getLooper());
Message msg=myHand.obtainMessage();
msg.sendToTarget();
System.out.println(Thread.currentThread().getName());
}
}
package cn.edu.subclass;
import android.os.*;
public class MyHandler extends Handler{
public MyHandler(Looper loop){
super(loop);
}
public void handleMessage(Message message){
System.out.println(Thread.currentThread().getName());
}
}
3、Android中的广播机制
Android中之所以叫广播机制,其实就类似于我们平常现实生活中的广播,比如当android系统收到一个一条短信时,这时候就会向其他注册了广播并对此广播事件感兴趣的程序发出消息,当别的应用程序收到改广播时,就会对该事件进行一定的处理。
方法一,通过配置AndroidManifest.xml文件,新增
<receiver android:name="cn.edu.subclass.MyBroadCastReceiver">
<intent-filter >
<!--action中的标签代表感兴趣的广播,此时我们对接收短信感兴趣-->
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
此时,如果系统收到短信,就会将广播信息传给该程序,该程序此时在那里处理这个广播呢,这时候我们就需要继承一个类,并重写其中的方法,如下
package cn.edu.subclass;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadCastReceiver extends BroadcastReceiver{
public MyBroadCastReceiver(){
System.out.println("constructed!");
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("OK");
}
}
当系统收到短信信后就会输出OK,也就是执行上面的onReceive方法
方法二:通过代码注册广播
package cn.edu.design;
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
import cn.edu.subclass.MyBroadCastReceiver;
public class AndroidBroadCastActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyBroadCastReceiver my=new MyBroadCastReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
this.registerReceiver(my, filter);
}
}
package cn.edu.subclass;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadCastReceiver extends BroadcastReceiver{
public MyBroadCastReceiver(){
System.out.println("constructed!");
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
System.out.println("OK");
}
}
方法一和方法二的区别是:方法一在程序关闭的时候,也会收到广播,执行其中的onReceive,方法二只会在程序开启的时候才会接收广播,执行onRecive方法,如果方法二种要移除该广播,可以调用unregisterReciver方法.
注意两种方法都要在AndroidManifest.xml中添加上如下配置信息:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
3、Android中的ListView使用方法
package cn.edu.ui;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;
public class Mp3PlayerActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
Map<String,String> map1=new HashMap<String,String>();
map1.put("name", "Hello");
map1.put("size", "1000");
list.add(map1);
SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,R.layout.mylistview,new String []{"name","size"},new int [] {R.id.name,R.id.size});
setListAdapter(simpleAdapter);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ListView android:id="@id/android:list"
android:drawSelectorOnTop="false"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:id="@+id/size"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
分享到:
相关推荐
在Android开发领域,经典代码例子是开发者学习和提升技能的重要资源。这些例子涵盖了各种关键功能和组件的实现,有助于深入理解Android应用的工作原理。在这个压缩包中,我们可能找到了多个有关Android编程的示例...
在Android开发领域,初学者经常会面临许多挑战,如理解Android应用程序的基本架构、学习XML布局、掌握Java或Kotlin编程语言,以及如何与设备硬件交互等。"Android开发入门60个小案例+源代码"这个资源提供了丰富的...
该组件是基于开源库`Android-wheel`实现的,`Android-wheel`是一个适用于Android的滚轮选择器,它可以创建类似于iOS中PickerView的效果,让用户通过滚动来选取所需的数据。在省市区三级联动中,当用户在一级(省)...
在Android开发中,系统默认的日期和时间选择器虽然实用,但往往无法满足所有场景的需求。因此,开发者经常需要自定义日期选择器来提供更符合应用风格或特定功能的交互体验。这篇内容将深入探讨如何在Android中创建一...
在Android开发中,有时我们需要与远程数据库进行交互,例如SQLServer。这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增...
在Android开发中,串口通信(Serial Port Communication)是一种重要的技术,它允许设备之间通过串行接口进行数据交换。在Android Studio环境下实现串口通信,开发者可以构建与硬件设备交互的应用,例如读取传感器...
在Android开发中,为UI元素添加虚线、圆角和渐变效果是常见的需求,可以提升应用的视觉吸引力。下面将详细讲解如何实现这些效果。 ### 一、虚线(Dashed Line) 在Android中,我们可以使用`Shape Drawable`来创建...
Android应用开发的哲学是把一切都看作是组件。把应用程序组件化的好处是降低模块间的耦合性,同时提高模块的复用性。Android的组件设计思想与传统的组件设计思想最大的区别在于,前者不依赖于进程。也就是说,进程...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
在Android开发中,有时我们需要对显示的图片进行特殊处理,比如让图片呈现圆角或完全圆形。本知识点将深入探讨如何在Android应用中完美实现图片的圆角和圆形效果。 首先,我们来看如何实现图片的圆角效果。Android...
Android新编译规则Android.bp文件语法规则详细介绍,条件编译的配置案例。 Android.bp 文件首先是 Android 系统的一种编译配置文件,是用来代替原来的 Android.mk 文件的。在 Android7.0 以前,Android 都是使用 ...
在现代的移动应用开发中,JavaScript与原生平台之间的交互变得越来越常见,特别是在使用Android的WebView组件时。本文将深入探讨如何使用JavaScript调用Android的方法,并传递JSON数据,以实现两者之间的高效通信。 ...
【Android扫雷游戏开发详解】 在移动开发领域,Android Studio是Google推出的官方集成开发环境(IDE),用于构建Android应用程序。本项目"Android扫雷游戏"就是利用Android Studio进行开发的一个实例,旨在帮助初学...
第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...
【Android 微信语音聊天Demo】是一个典型的移动应用开发示例,主要展示了如何在Android平台上构建类似微信的语音聊天功能。这个Demo包含了按钮状态切换、语音录制、本地存储、回放和加载等一系列关键操作,是Android...
Android SDK离线包合集(Android 4.0-5.0)。不用去Google下载,直接国内下载离线包,各版本文件独立,任意下载。手机流量上传了一部分,好心疼。如不能下载,请告诉我更新地址。 附上简单教程。 这是Android开发所...
在Android开发中,实现图片浏览的全屏缩放效果是一项常见的需求,特别是在社交应用中,如QQ好友动态和微信朋友圈。这种功能不仅需要提供良好的用户体验,还需要考虑性能和内存优化,因为图片通常较大,处理不当可能...
1. **Android SDK**:Android软件开发工具包(SDK)是开发Android应用的基础,包含了开发、调试和发布应用所需的所有工具,如Android Studio IDE、Java Development Kit(JDK)、模拟器以及各种版本的Android平台库...