部分学习(android)

login

public class login extends Activity {
    ImageView iv3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.login);
        iv3=(ImageView) findViewById(R.id.iv3);
        iv3.setOnClickListener(new OnClickListener() {            
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent();
                intent.setClass(login.this,
                        com.anhui.music_player.view.register.class);               
                startActivity(intent);            }        });    }}

login.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
     android:orientation="vertical" 
    tools:context=".MainActivity" >
    <LinearLayout       
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"       
        android:orientation="horizontal" >  
   <TextView
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_gravity="center_horizontal"
        android:text="用户登陆"
        android:textColor="#ffffff"
        android:background="#3399ff"
        android:textSize="25sp"
        android:gravity="center"         />  
</LinearLayout>
  <LinearLayout       
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"  
        android:paddingTop="35dp"     
        android:orientation="vertical" >
    <EditText
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:hint="用户名"           />    
</LinearLayout>
  <LinearLayout       
        android:layout_width="fill_parent"
        android:layout_height="50dp"       
        android:orientation="vertical" >
    <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="密码"
            android:paddingTop="15dp"           />    
</LinearLayout>  
   <ImageView 
        android:id="@+id/iv2" 
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:src="@drawable/login"
      android:layout_marginTop="30dp"
        android:onClick="doClick"         />
   <ImageView 
        android:id="@+id/iv3" 
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:src="@drawable/register"
        android:layout_marginTop="12dp"
        android:onClick="doClick"         />
   <TextView 
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="使用第三方登录:"
         android:layout_marginTop="30dp"
        android:textSize="25sp"       />
    <LinearLayout       
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
         android:paddingTop="22dp"      
        android:orientation="horizontal" >
    <ImageView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/login1"          />
    <ImageView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/login2"         />        
</LinearLayout></LinearLayout>

PlayerService

public class PlayerService extends Service {  
    private MediaPlayer mediaPlayer; // 媒体播放器对象  
    private String path;            // 音乐文件路径  
    private boolean isPause;        // 暂停状态  
    private int current = 0;        // 记录当前正在播放的音乐  
    private List<Music> mp3Infos;   //存放Mp3Info对象的集合  
    private int status = 3;         //播放状态,默认为顺序播放  
    private MyReceiver myReceiver;  //自定义广播接收器  
    private int currentTime;        //当前播放进度  
    private int duration;           //播放长度  
    public static final String UPDATE_ACTION = "com.wwj.action.UPDATE_ACTION";  //更新动作  
    public static final String CTL_ACTION = "com.wwj.action.CTL_ACTION";        //控制动作  
    public static final String MUSIC_CURRENT = "com.wwj.action.MUSIC_CURRENT";  //当前音乐播放时间更新动作  
    public static final String MUSIC_DURATION = "com.wwj.action.MUSIC_DURATION";//新音乐长度更新动作  
    private Handler handler = new Handler() {  
        public void handleMessage(android.os.Message msg) {  
            if (msg.what == 1) {  
                if(mediaPlayer != null) {  
                    currentTime = mediaPlayer.getCurrentPosition(); // 获取当前音乐播放的位置  
                    Intent intent = new Intent();  
                    intent.setAction(MUSIC_CURRENT);  
                    intent.putExtra("currentTime", currentTime);  
                    sendBroadcast(intent); // 给PlayerActivity发送广播  
                    handler.sendEmptyMessageDelayed(1, 1000);  
                }                                }          };      };  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        Log.d("service", "service created");  
        mediaPlayer = new MediaPlayer();  
        mp3Infos =MusicList.getMusicData(this);   
        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {    
            @Override  
            public void onCompletion(MediaPlayer mp1) {  
                if (status == 1) { // 单曲循环  
                    mediaPlayer.start();  
                } 
                else if (status == 2) { // 全部循环  
                    current++;  
                    if(current > mp3Infos.size() - 1) {  //变为第一首的位置继续播放  
                        current = 0;  
                    }               
                } else if (status == 3) { // 顺序播放  
                    current++;  //下一首位置  
                    if (current <= mp3Infos.size() - 1) {  
                        Intent sendIntent = new Intent(UPDATE_ACTION);  
                        sendIntent.putExtra("current", current);  
                        sendBroadcast(sendIntent);  
                        path = mp3Infos.get(current).getUrl();  
                        play(0);  
                    }else {  
                        mediaPlayer.seekTo(0);  
                        current = 0;  
                        Intent sendIntent = new Intent(UPDATE_ACTION);  
                        sendIntent.putExtra("current", current);  
                        sendBroadcast(sendIntent);  
                    }  
                } else if(status == 4) {    //随机播放  
                    current = getRandomIndex(mp3Infos.size() - 1);  
                    System.out.println("currentIndex ->" + current);  
                    Intent sendIntent = new Intent(UPDATE_ACTION);  
                    sendIntent.putExtra("current", current);   
                    sendBroadcast(sendIntent);  
                    path = mp3Infos.get(current).getUrl();  
                    play(0);                  }              }          });   
        myReceiver = new MyReceiver();  
        IntentFilter filter = new IntentFilter();
        registerReceiver(myReceiver, filter);      }  
    protected int getRandomIndex(int end) {  
        int index = (int) (Math.random() * end);  
        return index;      }  
    @Override  
    public IBinder onBind(Intent arg0) {  
        return null;      }  
    private void play(int currentTime) {  
        try {  
            mediaPlayer.reset();// 把各项参数恢复到初始状态  
            mediaPlayer.setDataSource(path);  
            mediaPlayer.prepare(); // 进行缓冲  
            mediaPlayer.setOnPreparedListener(new PreparedListener(currentTime));// 注册一个监听器  
            handler.sendEmptyMessage(1);  
        } catch (Exception e) {  
            e.printStackTrace();          }      }  
    private void pause() {  
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {  
            mediaPlayer.pause();  
            isPause = true;          }      }    
    private void resume() {          if (isPause) {  
            mediaPlayer.start();  
            isPause = false;          }      }  
    private void previous() {  
        Intent sendIntent = new Intent(UPDATE_ACTION);  
        sendIntent.putExtra("current", current); 
        sendBroadcast(sendIntent);  
        play(0);  
    }   
    private void next() {  
        Intent sendIntent = new Intent(UPDATE_ACTION);  
        sendIntent.putExtra("current", current);
        sendBroadcast(sendIntent);  
        play(0);      }  
    private void stop() {  
        if (mediaPlayer != null) {  
            mediaPlayer.stop();  
            try {  
                mediaPlayer.prepare(); // 在调用stop后如果需要再次通过start进行播放,需要之前调用prepare函数  
            } catch (Exception e) {  
                e.printStackTrace();              }          }      }   
    @Override  
    public void onDestroy() {  
        if (mediaPlayer != null) {  
            mediaPlayer.stop();  
            mediaPlayer.release();  
            mediaPlayer = null;          }                }  
    private final class PreparedListener implements OnPreparedListener {  
        private int currentTime;  
  
        public PreparedListener(int currentTime) {  
            this.currentTime = currentTime;         }    
        @Override  
        public void onPrepared(MediaPlayer mp) {  
            mediaPlayer.start(); // 开始播放  
            if (currentTime > 0) { // 如果音乐不是从头播放  
                mediaPlayer.seekTo(currentTime);              }  
            Intent intent = new Intent();  
            intent.setAction(MUSIC_DURATION);  
            duration = mediaPlayer.getDuration();  
            intent.putExtra("duration", duration);  //通过Intent来传递歌曲的总长度  
            sendBroadcast(intent);          }      }    
    public class MyReceiver extends BroadcastReceiver {  
  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            int control = intent.getIntExtra("control", -1);  
            switch (control) {  
            case 1:                  status = 1; // 将播放状态置为1表示:单曲循环                  break;  
            case 2:                  status = 2; //将播放状态置为2表示:全部循环                  break;  
            case 3:                  status = 3; //将播放状态置为3表示:顺序播放                  break;  
            case 4:                  status = 4; //将播放状态置为4表示:随机播放                  break;              }          }      }   }
时间: 2024-10-24 15:13:39

部分学习(android)的相关文章

问题:android学习内容破碎,我个人关于如何学习android的一些个人经历

android学习两个月心得 我于大三下学期,开始准备学习android,在寒假期间,学了毕向东的java视频的前10天,觉得还不错,上网找评论,他们都说,只要学到多线程就可以学习android了, 开学我就开始了android的学习,做了一些简单的UI,实现了几个简单Activity的信息传递和跳转.但是在学习的过程中我发现(到目前为止,大概两个月),android的知识点就像是一片又一片的花瓣,你可以任意挑选这去学习,没有一个权威的方向. 各种视频教程,图书,包括android的官方开发文档

学习Android之初。

今天开始,要正式系统的学习Android了.我想要看清未来的路.so,我查了很多,这篇博客很对胃口,写的很具体,一目了然.以至于可以预知之后的路. Thanks.从今天开始,也要付出努力了.当下把Android学好,以后工作后学习,前端和服务器端,以及html5和Hadoop.我爱编程,它将伴我一生. 大道三千,何以证道? 最近有私信.邮件给我咨询一些职业生涯规划的同学,我在这里以过来人的身份给大家一些建议. 任何行业,任何职位,无论高低,无论大小,都可以分为广博.精深两个方向. 精深自然指的是

C#程序员学习Android开发系列之ListView

上篇博客解决了Android客户端通过WebService与服务器端程序进行交互的问题,这篇博客重点关注两个问题,一个是Android应用程序如何与本机文件型数据库SQLite进行交互,另一问题则是如何在ListView中按照我们想要的界面效果进行展示.限于篇幅这篇重点讲ListView,下篇博客重点阐述SQLite. ListView是一个常用的数据显示控件,假设我们要做一个简单的界面,如图所示. 这张图是我直接从Android平板电脑(Android 4.2.2)上面截图下来的,就是一个普通

学习Android之SharedPreferences使用

效果图如下: 当我们想让自己的属性设置保存下来,这时就需要SharedPreferences. 上面这个小程序,音乐状态是保存下来的.使用的上一次退出的状态. 进入DDMS,data文件下的data文件中,找到自己的包名文件,双击打开,有shared_prefs文件,里面有xml文件,这就是配置文件. 本程序使用了android的上下键,同常我们的模拟器的方向键是不能用的,这是就需要我们打开它,在C盘下找到文件 .android,双击avd文件,找到你的模拟器的文件夹,双击打开,找到config

学习Android之SimpleAdapter显示网络图片

效果图: 此程序主要的知识点是:SimpleAdapter本身是不支持网络图片的, 如果在Map.put(a,b)中 b为一个Bitmap,程序不会报红色字体,而是在控制台输出绿色的字体,如下 05-10 15:46:45.474: I/System.out(846): resolveUri failed on bad bitmap uri: [email protected] 要想实现显示网络图片其实很简单,使用SimpleAdapter中的方法simpleAdapter.setViewBin

C#程序员学习Android开发系列之学习路线图

通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明确一下接下来的学习目标以及学习路线. 一.对Android开发的基本认识 1.Android原生开发是基于Java语言的,由于我比较擅长C#,所以对Java语言本身不太熟练,需要加强Java语言基础的练习,这一块我会穿插到具体的知识点练习当中,并且在必要的地方给出与C#语言的对比(其实基本上在语法层

学习Android之第八个小程序文件保存(Notification、AndroidTestCase)

效果图:       .java文件有MainActivity.java.FileService.java.FileServiceTest.java, .xml文件有activity_main.xml. 本次注重AndroidTestCase类的使用,在开发中非常实用.用于测试某一功能. 使用AndroidTestCase类,有如下的要求: 1.在AndroidManifest.xml文件中,<manifest></manifest>中添加如下: <instrumentati

一起来学习Android自定义控件1

概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了.自定义控件对于初学者总是感觉是一种复杂的技术.因为里面涉及到的知识点会比较多.但是任何复杂的技术后面都是一点点简单知识的积累.通过对自定义控件的学习去可以更深入的掌握android的相关知识点,所以学习android自定义控件是很有必要的.记得以前学习总是想着去先理解很多知识点,然后再来学着自定义控件,但是每次写自定义控件的时候总是不知道从哪里下手啊.后来在学习的过程

C#程序员学习Android开发系列之SQLite

上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app打包到apk文件当中. SQLite的官方网站是http://www.sqlite.org/,可以任意下载,上面也有详尽的文档可以参考,这篇博客重点关注SQLite在Android开发中如何使用. 在Android开发中,推荐建立一个类继承自SQLiteOpenHelper来创建数据库操作类,比如:

站在巨人的肩膀上学习Android开发

我们知道,一开始最好的学习方法是模仿,尤其是模仿巨人.那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法,进而提升自己的技术. 第一招----逆向工程 要分析"巨人"们的软件,自然免不了逆向工程,即将APK程序转化为我们可以看的懂得源码.这个google官方已经帮我们做好了工具,apktool就是一款很好的逆向工具. 下载地址为:http://pan.baidu.com/s/1kTqRhaR 我们以分析微信为例来说明这个工具的使用: 你只需执行如下命令,即完成了反