国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android studio 3.0 service項目背景音樂實現

2019-10-22 18:22:58
字體:
來源:轉載
供稿:網友

這篇文章是博主在通過學習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。
先寫入布局代碼,三個按鈕用來播放,停止,暫停

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"  android:paddingRight="@dimen/activity_horizontal_margin"  android:paddingTop="@dimen/activity_vertical_margin"  android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">  <TextView android:text="音頻播放器" android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/textView" />  <LinearLayout    android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:layout_below="@+id/textView"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true">    <Button      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="播放"      android:id="@+id/button"      android:layout_weight="0.33" />    <Button      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="停止"      android:id="@+id/button2"      android:layout_weight="0.33" />    <Button      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="暫停"      android:id="@+id/button3"      android:layout_weight="0.33" />  </LinearLayout></RelativeLayout>

 

android,studio,service,背景音樂

android,studio,service,背景音樂

android,studio,service,背景音樂

android,studio,service,背景音樂

最后將service與音頻播放結合,寫了一個可以再主界面播放的背景音樂:
此界面一打開就有音樂:

android,studio,service,背景音樂

開發過程學到的郵件發送

這個在上一次的隨堂小測中間有用到。

public class Main {  public static String myEmailAccount = "929585831@qq.com";  public static String myEmailPassword = "uhszzhgojydfbbec";  // 授權碼  public static String myEmailSMTPHost = "smtp.qq.com";  // 收件人郵箱  public static String receiveMailAccount = "541227688@qq.com";  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<30;i++) {      // 3. 創建一封郵件      MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount);      // 4. 根據 Session 獲取郵件傳輸對象      Transport transport = session.getTransport();      // 5. 使用 郵箱賬號 和 密碼 連接郵件服務器, 這里認證的郵箱必須與 message 中的發件人郵箱一致, 否則報錯      transport.connect(myEmailAccount, myEmailPassword);      // 6. 發送郵件, 發到所有的收件地址, message.getAllRecipients() 獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人      transport.sendMessage(message, message.getAllRecipients());      // 7. 關閉連接      transport.close();          }  }  /**   * 創建一封只包含文本的簡單郵件   *   * @param session 和服務器交互的會話   * @param sendMail 發件人郵箱   * @param receiveMail 收件人郵箱   * @return   * @throws Exception   */  public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {    // 1. 創建一封郵件    MimeMessage message = new MimeMessage(session);    // 2. From: 發件人(昵稱有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至返回失敗,請修改昵稱)    message.setFrom(new InternetAddress(sendMail, "you father", "UTF-8"));    // 3. To: 收件人(可以增加多個收件人、抄送、密送)    message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "XX用戶", "UTF-8"));    // 4. Subject: 郵件主題(標題有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至返回失敗,請修改標題)    message.setSubject("打折鉅惠", "UTF-8");    // 5. Content: 郵件正文(可以使用html標簽)(內容有廣告嫌疑,避免被郵件服務器誤認為是濫發廣告以至返回失敗,請修改發送內容)    message.setContent("新疆人用戶你好,快來買鞋,今天全場5折, 快來搶購, 錯過今天再等一年。。。emmm軟工實踐測試郵件", "text/html;charset=UTF-8");    // 6. 設置發件時間    message.setSentDate(new Date());    // 7. 保存設置    message.saveChanges();    return message;  }

 

android,studio,service,背景音樂

android,studio,service,背景音樂

 


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘乡市| 迁安市| 镇康县| 乐至县| 保定市| 巴楚县| 余江县| 河北省| 乡宁县| 南部县| 苍山县| 堆龙德庆县| 普宁市| 滕州市| 阿拉善右旗| 疏勒县| 霍城县| 会理县| 万源市| 临高县| 辽中县| 丽江市| 通州市| 临泽县| 普宁市| 晴隆县| 星座| 虞城县| 林芝县| 方山县| 万全县| 齐齐哈尔市| 甘泉县| 安岳县| 青州市| 宽甸| 宣恩县| 阿合奇县| 开化县| 华阴市| 东城区|