带字幕的音乐播放器返回时崩溃

希望能够实现按下返回键可以返回上一个界面,并且停止当前音频字幕播放,还有就是跳过欢迎界面,直接退出程序

 package com.example.jindutiao.audio1;


import java.io.IOException; 

import com.com.demokejian_1.ContentActivity;
import com.com.demokejian_1.R;
import com.example.jindutiao.audio1.*;

import android.app.Activity; 
import android.content.Intent;
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.Handler; 
import android.view.KeyEvent;
import android.view.View; 
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
public class TextAActivity extends Activity { 
/** Called when the activity is first created. */ 
private LyricView lyricView; 
private MediaPlayer mediaPlayer; 
private Button button; 
private SeekBar seekBar; 
private String mp3Path; 
private int INTERVAL=15;//歌词每行的间隔 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏

setContentView(R.layout.main); 
mp3Path ="/sdcard/texta.mp3"; 

    lyricView = (LyricView) findViewById(R.id.mylrc); 
    mediaPlayer = new MediaPlayer(); 
    ResetMusic(mp3Path); 
    SerchLrc(); 
    lyricView.SetTextSize(); 
    button = (Button) findViewById(R.id.button); 
    button.setText("播放"); 
    seekBar = (SeekBar) findViewById(R.id.seekbarmusic); 
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
        @Override 
        public void onStopTrackingTouch(SeekBar seekBar) { 

        } 
        @Override 
        public void onStartTrackingTouch(SeekBar seekBar) { 

        } 
        @Override 
        public void onProgressChanged(SeekBar seekBar, int progress, 
                boolean fromUser) { 
            if (fromUser) { 
                mediaPlayer.seekTo(progress); 
                lyricView.setOffsetY(220 - lyricView.SelectIndex(progress) 
                        * (lyricView.getSIZEWORD() + INTERVAL-1)); 
            } 
        } 
    }); 
    button.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
            if (mediaPlayer.isPlaying()) { 
                button.setText("播放"); 
                mediaPlayer.pause(); 
            } else { 
                button.setText("暂停"); 
                mediaPlayer.start(); 
                lyricView.setOffsetY(220 - lyricView.SelectIndex(mediaPlayer.getCurrentPosition()) 
                        * (lyricView.getSIZEWORD() + INTERVAL-1)); 
            } 
        } 
    }); 
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mp) { 
            ResetMusic(mp3Path); 
            lyricView.SetTextSize(); 
            lyricView.setOffsetY(200); 
            mediaPlayer.start(); 
        } 
    }); 
    seekBar.setMax(mediaPlayer.getDuration()); 
    new Thread(new runable()).start(); 
    } 
    public void SerchLrc() { 
        String lrc = mp3Path; 
        lrc = lrc.substring(0, lrc.length() - 4).trim() + ".lrc".trim(); 
        LyricView.read(lrc); 
        lyricView.SetTextSize(); 
        lyricView.setOffsetY(350); 
    } 
    public void ResetMusic(String path) { 
        mediaPlayer.reset(); 
        try { 
            mediaPlayer.setDataSource(mp3Path); 
            mediaPlayer.prepare(); 
        } catch (IllegalArgumentException e) { 
            e.printStackTrace(); 
        } catch (IllegalStateException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
    class runable implements Runnable { 
        @Override 
        public void run() { 
            while (true) { 
                try { 
                    Thread.sleep(100); 
                    if (mediaPlayer.isPlaying()) { 
                        lyricView.setOffsetY(lyricView.getOffsetY() - lyricView.SpeedLrc()); 
                        lyricView.SelectIndex(mediaPlayer.getCurrentPosition()); 
                        seekBar.setProgress(mediaPlayer.getCurrentPosition()); 
                        mHandler.post(mUpdateResults); 
                    } 
                } catch (InterruptedException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
    } 
    Handler mHandler = new Handler(); 
    Runnable mUpdateResults = new Runnable() { 
        public void run() { 
            lyricView.invalidate(); // 更新视图 
        } 
    }; 
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK||keyCode == KeyEvent.KEYCODE_HOME) {
            if(mediaPlayer != null){
                mediaPlayer.stop();
                mediaPlayer.release();

            }
            Intent intent1 = new Intent(this, ContentActivity.class);
            startActivity(intent1);
        }
        return super.onKeyDown(keyCode, event);
    }
} 

图片说明

0

2个回答

日志说了你的mediaplayer正在播放了,你把这段代码执行的地方把它先停掉吧。

0

很抱歉本人能力有限,帮不了问主!但我可以给您一个建议,如果您的C币富裕的话,追加两个悬赏吧,这一个币确实有点少,无法吸引大牛费心回答

0
mengmengyu_
mengmengyu_ 好的,谢谢,其实我也不富裕,这个问题我用其他方式避开了,有兴趣可以再说
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
iOS pop返回时崩溃
最近做项目 遇到一个很奇葩的bug,在popViewControllerAnimated  时莫名发生crash,报的错就是发生了EXC_BAD_ACCESS  即,控制器释放了 却还在调用里面的方法,后来试过了 if ([NSThread isMainThread]) { [self.navigationController popViewControllerAnimated:Y
烟花爆炸带字幕
这是最基础的一个烟花爆炸效果的实现 加上字体的随机颜色变换
带流动字幕程序
带流动字幕程序,vfp初学者比较实用.主要指导读者享用。
带字幕的导航条
显示在最右边的导航条,类似通讯录,功能实现,欢迎大家下载
android垂直字幕滚动,类似音乐播放器字幕效果
android垂直字幕滚动,类似音乐播放器字幕效果,字幕水平变色,垂直滚动
奥讯字幕音乐播放器(高品质音乐播放器)V1.1免费绿色版
奥讯字幕音乐播放器(高品质音乐播放器)是一款非常不错的音乐播放盒子。想收听高品质音乐?奥讯字幕音乐播放器(高品质音乐播放器)为用户在线播放。可以随时的根据自己的需要制定一些歌词,同时也可以对一些新歌曲的歌词进行制作,总体来说界面简单,美观大方,有需要制作歌词的朋友快来下载使用吧。 软件功能: 1、在音乐播放的同时显示音乐歌词; 2、支持自由制作歌曲歌词!
带圆形进度条的音乐播放器
带环形进度条的音乐播放器,cavans绘制进度条。代码很简单
音乐播放器带源码的哦
自己做的一个东西带原代码的哦供朋友们研究哦
音乐播放器(带定时播放)
C++编写的音乐播放器,可设置定时播放.欢迎交流
带搜索功能的音乐播放器
打造一个属于自己的音乐播放器,并且基于其他平台的数据库能进行搜索歌曲功能的实现
易语言音乐播放器(带频谱)
这是借鉴别人制作的频谱源码,自己加上了一个功能
Android 带手势识别的音乐播放器
Android 播放器 手势识别 音乐 画面很漂亮
带进度条的音乐播放器
高度模仿现在手机上有的播放器,进度条可以随滑动,也可以根据时间的推移而移动。
带通知栏的安卓音乐播放器
实现了类似天天动听的通知栏管理音乐功能,有上一首、下一首、播放、暂停、关闭应用,实现中用到了IntentService、BroadcastReceiver、Application、Notification等,对安卓进阶很有帮助,当然项目只是个demo,还有很多地方没处理好,如果你想做个完整的音乐播放器应用,可以拿他作基础
音乐播放器(带数据库语句)
一个简单的音乐播放器,个人可以参考一下(带数据库语句)
音乐播放器(带视频播放)
自制的一个MFC小型播放器,很有用,支持多种音乐格式和视频格式!!!
android音乐播放器带详细注释
代码小巧功能齐全,附带详细注释! 资源来自培训老师的上传,不要积分!代码具体出处不详,注释是老师加的!
带桌面歌词的音乐播放器
本博客近期每天推出MFC实例课程讲解,如果你对此感兴趣, 欢迎访问我的博客主页,http://www.gymsaga.com/ MFC专栏请进 --- http://www.gymsaga.com/category/project/developc/mfc 本次实例代码讲解地址:http://www.gymsaga.com/project/355.html 如果你有什么不懂的,或者我讲的地方有那些不对或者不恰当的地方,也欢迎你批评指正
c#带歌词的音乐播放器
c#带歌词的音乐播放器
带ListView的音乐播放器
带ListView的音乐播放器   [功能] 前篇写的是:通过文件名来播放视频 今天说的是:通过MediaStore 来得到目标的Uri 在把之传入MediaPlay 然后再播放   所以 会有2个重点: * 列出emulator 的所有音乐文件 * 音乐播放器       [代码 步骤] 1. 构建界面:main.xml 写道 1 Button 用于音乐播放控制(暂停...
带歌词的音乐播放器
功能完整的音乐播放器,支持逐行根据歌曲的播放显示歌词,还具备暂停、快进、后退、滑动条选择播放进度、调节音量、循环播放、选歌等功能。
安卓音乐播放器相关-AndroidlyricLRC歌词字幕.rar
Android lyric LRC 歌词字幕.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
带广告字幕和时间的屏幕保护
使用说明: 一,安装:把"带广告字幕和时间的屏幕保护.scr"文件拷贝到系统盘SYSTEM32目录下 二.配置:在C:\根目录下新一个"字幕.txt"文件 三,设置屏保:桌面右键->属性->你懂的。。。
在windows 2000下播放带字幕的电影时,vobsub总报错
错误为应用程序错误rn“0x0153d755指令引用的“0x00000000”内存。改内存不能为“read”,rn希望各位有经验的大虾不吝赐教。
android Mp3音乐播放器,带歌词,带进度条
android Mp3音乐播放器,带歌词,带进度条
MFC音乐播放器为什么一打开文件就崩溃了?
照着网上做的:http://blog.csdn.net/codemore/article/details/50151785,编译都通过了,但选择完文件后就崩了,求大神指点[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/9.gif][/img]rnrn[img=https://img-bbs.csdn.net/upload/201801/05/1515140656_104017.jpg][/img]
友盟微信分享返回app崩溃
以前没问题。突然出现的状况 让人蛋疼的是没有解决方法。当你接连XCode进行调试的时候会崩溃。但拔出连接线,单独运行就OK。 可能是友盟的问题、也可能是微信或者苹果方面的问题 正在等待解决。
安卓综合音乐播放器带进度条
一个综合的音乐播放器,带进度条播放,可更改APP主题颜色,四大主题,可自动扫描本地音乐,可设置喜爱歌曲,
带歌词同步功能的音乐播放器
带歌词同步功能的音乐播放器,用C#做的,不错的,老师发的
51单片机带遥控的多功能音乐播放器
带红外遥控的多功能51单片机,遥控器可显示遥控信息,震动传感器启动。 音乐播放器能显示节拍
仿小米音乐播放器带widget
优雅音乐播放器带widget,界面好看,仿MIUI音乐
VC音乐播放器(带歌词同步)
带歌词同步的音乐播放器,歌词*.lrc文件需要通过记事本另存为ANSI编码
网页音乐播放器带播放列表.zip
网页音乐播放器带播放列表,可以自定义修改背景,初始化声音大小修改源码可以实现
html5带滚动歌词音乐播放器
html5+js带滚动歌词音乐播放器,同时还支持列表(用json) by:小灰灰 有需要的朋友可以下载使用哦 谢谢大家支持
Qt 音乐播放器(带文档说明)
Qt 简单的音乐播放器(带文档说明)c++
addr2line带so库的崩溃定位
带有so库程序,如果崩溃点在so库内,崩溃后,按以下步骤定位崩溃位置: 1.执行命令“dmesg | tail” [36428.047870] traps: hello[23808] trap divide error ip:7f488bc77752 sp:7ffeca9d5170 error:0 in libbreakdowndemo.so[7f488bc77000...
C#音乐播放器(带歌词下载)
歌词自动联网下载,对于歌曲信息要求完整,最好是正式的音乐文件 歌词可能不匹配 软件还存在内存泄露,暂时不知道怎么解决
C#.net mp3音乐播放器,带源码
一个简单的mp3播放器,只有最基本的功能, 仅供学习参考使用
Android带播放进度条的音乐播放器
Android带播放进度条的音乐播放器前言: 使用MediaPlayer实现Android的音乐播放器,能够播放、暂停、停止歌曲;同时使用SeekBar来控制音乐的播放进度,可以通过调节SeekBar的进度来控制播放进度。效果图如下:1. 第一步布局文件activity_main.xml<?xml version="1.0" encoding="utf-8"?> <RelativeLayout
上传文件时tomcat崩溃
在项目中,我用到的tomcat是5.5的,在linux上跑。最近发现在上传文件时,如果连续上传10个左右,就会出现tomcat崩溃的情况。JVM的内存我已经设置成为512M的了。现将代码分别贴出,请各位帮忙看一看:(是SSH架构的)rnrnjsp:rnrn rn...rnrnrnrn....rn/form>rnrn===============================rnrnstruts.xml:rnrnrn rn ...rn rn rn rnrnrnrn rnrnrn====================================rnrnaciton:rnrn//保存rnpublic boolean setBeanValueByDynaActionForm(ActionMapping mapping, ActionForm form,rn HttpServletRequest request, HttpServletResponse response)rn this.myExecute(mapping, form, request, response); rn DynaActionForm hzForm = (DynaActionForm) form;rn ...rnFormFile localfile = null;rn//外景照片rnlocalfile = (FormFile)hzForm.get("file1"); rnif(localfile!=null) this.upload(localfile, request, 6L); rnrnlocalfile = (FormFile)hzForm.get("file2"); rnif(localfile!=null) this.upload(localfile, request, 6L);rnrnlocalfile = (FormFile)hzForm.get("file3"); rnif(localfile!=null) this.upload(localfile, request, 6L);rn rn...rnrn//上传文件rnprivate void upload(FormFile localfile,HttpServletRequest request,long flag)rn String finalFileName="";rn if(localfile!=null) rn finalFileName = Upload.uploadAttachment( localfile , request);//上传文件rn rn if(finalFileName != null && !finalFileName.equals(""))rn uploadFile(localfile,request,finalFileName,flag);//保存到附件表rn rnrnrn上传文件的类:rnpublic class Upload rn public static String uploadAttachment( FormFile file , HttpServletRequest request)rn if( SystemGlobal.uploadAccess[0].toString().indexOf(file.getContentType())>=0 && file.getFileSize() <= ( 2048 * (Integer.parseInt( SystemGlobal.uploadAccess[1].toString()) ))) //是图片并且小于?krn String path = SystemGlobal.webDir(request) + SystemGlobal.uploadAccess[2] + System.getProperty("file.separator") + StringUtil.date2String() + System.getProperty("file.separator"); rn File dir = new File(path);rn if(!dir.exists())dir.mkdir();rn String filename = "";rn if(!file.getFileName().equals(""))rn tryrn filename = StringUtil.time2String() + StringUtil.ramdom(4)+ "." + file.getFileName().substring(file.getFileName().length()-3) ; rn InputStream stream = file.getInputStream();rn FileOutputStream output = new FileOutputStream( path + filename );rn int len = -1;rn byte[] buf = new byte[102400];rn while((len = stream.read(buf)) != -1)rn output.write(buf,0,len);rn rn output.close();rn stream.close();rn catch(IOException e)Log.error( Upload.class , "upload write stream ha error:" + e);rn rn return filename;rn rn return "";rnrnrn==============================rntareamanage.hbm.xml 一对多,一个场馆可以有多个图片rnrnrnrn rn rn rn rnrn rn====================================rn大致上就是这些了,代码里是否存在不合理的地方而导致什么原因从而令到tomcat死掉了呢?tomcat里的logs也没有一点报错的信息可以看的。rnrnrn后来我直接将其转换为open session in view模式,奇怪的是我在windows下可以运行(开发机),但在linux下就报session已经关闭这个错误的了。这又是为什么呢?(服务器是linux系统).rnrn请各位高手帮忙看一看吧,如果搞不好这个可能会丢饭碗的。谢谢大家了。rnrnrnrnrnrn