一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

android studio 3.0 service项目背景音乐实现

时间:2022-06-25 23:11:50 编辑:袖梨 来源:一聚教程网

这篇文章是博主在通过学习Android Studio的同时,实现service项目中用于背景音乐的实现,邮件的发送用于随堂小测的发送邮件功能。其中也碰到需要坑和错误,最后都解决了,一起跟着学习一下吧。如果大家有更好的方法可以在下面的留言区讨论。

本次项目我主要负责Android studio的后端,以及游戏文案游戏策划,结果后来事情太散了,Android studio学的不咋地,文案写完还有帮着写一写数据库的插入语句,然后就是跟队友完成了as的后台插入声音的代码。接下来介绍的service项目中用于背景音乐的实现,邮件的发送用于随堂小测的发送邮件。

开发基础之Service

Activity可以呈现一个用户界面,但是Service运行在后台,试了以下实例,启动Service,并通过从Activity向Service传递数据。

package com.example.lhb.startservice; 
 
import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.view.ViewDebug; 
import android.widget.Toast; 
 
public class MyService extends Service { 
  private boolean Running=false; 
  private String data="默认信息!!!"; 
  public MyService() { 
  } 
 
  @Override 
  public IBinder onBind(Intent intent) { 
    // TODO: Return the communication channel to the service. 
    throw new UnsupportedOperationException("Not yet implemented"); 
  } 
 
  @Override 
  public int onStartCommand(Intent intent, int flags, int startId) {  
    data=intent.getStringExtra("data");//这里的intent是参数里的,不是自定义的 
    return super.onStartCommand(intent, flags, startId); 
  } 
 
  @Override 
  public void onCreate() { 
    super.onCreate(); 
    Running=true; 
    new Thread(){ 
      @Override 
      public void run() { 
        super.run(); 
        while (Running){ 
          System.out.println(data); 
          try { 
            sleep(3000); 
          } catch (InterruptedException e) { 
            e.printStackTrace(); 
          } 
        } 
      } 
    }.start(); 
  } 
 
  @Override 
  public void onDestroy() { 
    super.onDestroy(); 
    Running=false; 
  } 
} 
//主代码
package com.example.lhb.startservice; 
 
import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 
 
 
public class MainActivity extends ActionBarActivity { 
  private EditText inputText; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    findViewById(R.id.btnStartService).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        inputText= (EditText) findViewById(R.id.inputText); 
        if(inputText.getText().length()==0){ 
          Toast.makeText(MainActivity.this,"请输入传递的值!",Toast.LENGTH_SHORT).show(); 
          return; 
        } 
        Intent intent; 
        intent=new Intent(MainActivity.this,MyService.class); 
        intent.putExtra("data",inputText.getText().toString()); 
        startService(intent); 
      } 
    }); 
 
    findViewById(R.id.btnStopService).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Intent intent; 
        intent=new Intent(MainActivity.this,MyService.class); 
        stopService(intent); 
      } 
    }); 
  } 
} 

以此来完成Activity向Service传递数据的任务。
之后尝试了as中间去实现音乐播放器,参考第一行代码p303-307。
先写入布局代码,三个按钮用来播放,停止,暂停



  

  

    

    

    
  


最后将service与音频播放结合,写了一个可以再主界面播放的背景音乐:
此界面一打开就有音乐:

开发过程学到的邮件发送

这个在上一次的随堂小测中间有用到。

public class Main {
  public static String myEmailAccount = "[email protected]";
  public static String myEmailPassword = "uhszzhgojydfbbec";  // 授权码

  public static String myEmailSMTPHost = "smtp.qq.com";

  // 收件人邮箱
  public static String receiveMailAccount = "[email protected]";

  public static void main(String[] args) throws Exception {
    // 1. 创建参数配置, 用于连接邮件服务器的参数配置
    Properties props = new Properties();          // 参数配置
    props.setProperty("mail.transport.protocol", "smtp");  // 使用的协议(JavaMail规范要求)
    props.setProperty("mail.smtp.host", myEmailSMTPHost);  // 发件人的邮箱的 SMTP 服务器地址
    props.setProperty("mail.smtp.auth", "true");      // 需要请求认证
    
    // SMTP 服务器的端口 ,
    //         需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,
    //         QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)
    final String smtpPort = "465";
    props.setProperty("mail.smtp.port", smtpPort);
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.socketFactory.fallback", "false");
    props.setProperty("mail.smtp.socketFactory.port", smtpPort);
    
    // 2. 根据配置创建会话对象, 用于和邮件服务器交互
    Session session = Session.getInstance(props);
    session.setDebug(true);                 // 设置为debug模式, 可以查看详细的发送 log


    int i=0;                       //写了个小循环舍友连收30份垃圾邮件emmm
    for(i=0;i

热门栏目