在模拟器的工作,但手机不能正常工作在android系统? [英] Working in emulator but not working in phone in android?
问题描述
我是新到Android,我在完成阶段创建一个应用程序。
但不幸的是我在Android手机上运行它的时候,但在Android模拟器完美地工作的一些错误得到提高...
下面是我的Java code:
包com.VRG;
进口的java.util.ArrayList;
进口的java.util.List;
进口了java.util.Random;
进口java.util.Vector中;进口android.app.Activity;
进口android.app.AlertDialog;
进口android.content.DialogInterface;
进口android.content.Intent;进口android.media.MediaPlayer;
进口android.media.MediaPlayer.OnCompletionListener;
进口android.os.Bundle;
进口android.os.CountDownTimer;
进口android.util.Log;
进口android.view.KeyEvent;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.ImageView;
进口android.widget.TextView;
进口android.widget.Toast;公共类Animalsgame扩展活动实现OnClickListener {
// INT答案= 0;
按钮的声音;
MediaPlayer的熔点;
TextView的时间; //倒计时器
ImageView的img_view1;
ImageView的img_view2;
ImageView的img_view3;
ImageView的img_view4;
私人ImageView的selectedImageView;
静态INT索引= 0;
静态INT索引1 = 0;
静态INT noOfLapse;
静态诠释计数;
静态INT得分= 1;
静态布尔isSoundPlay;
CountDownTimer CountDownTimer;
INT IDX;
接下来的整数; 私人随机随机的;
私人的ArrayList< MediaPlayer的>声音;
私人的ArrayList< MediaPlayer的> tempSounds;
//跟踪哪些正在播放的声音
私人诠释soundSelectedIndex; 私人矢量matchImages = NULL;
清单<整数GT;生成的; //形象箱总数 私有静态最终诠释NO_IMAGE_BOXES = 4; 最终诠释[] = imageViews {R.id.img_view1,R.id.img_view2,R.id.img_view3,
R.id.img_view4};的图像视图//阵列 INT [] = Animals_images {R.drawable.cow,R.drawable.lion,R.drawable.dog,
R.drawable.sheep,R.drawable.elephant,R.drawable.camel,
R.drawable.rhinos,R.drawable.horse,R.drawable.donkey,
R.drawable.wolf}; //动物图像阵列 @覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.game); 时间=(TextView中)this.findViewById(R.id.time); img_view1 =(ImageView的)this.findViewById(R.id.img_view1);
img_view2 =(ImageView的)this.findViewById(R.id.img_view2);
img_view3 =(ImageView的)this.findViewById(R.id.img_view3);
img_view4 =(ImageView的)this.findViewById(R.id.img_view4); img_view1.setOnClickListener(本);
img_view2.setOnClickListener(本);
img_view3.setOnClickListener(本);
img_view4.setOnClickListener(本); // 倒计时器
声音=(按钮)this.findViewById(R.id.voice); //动物的声音 voice.setOnClickListener(本); //初始化失效计数器
noOfLapse = 0;
isSoundPlay = TRUE; 随机=新的随机(); 听起来=新的ArrayList< MediaPlayer的>();
sounds.add(MediaPlayer.create(这一点,R.raw.cow));
sounds.add(MediaPlayer.create(这一点,R.raw.lion));
sounds.add(MediaPlayer.create(这一点,R.raw.dog));
sounds.add(MediaPlayer.create(这一点,R.raw.sheep));
sounds.add(MediaPlayer.create(这一点,R.raw.elephant));
sounds.add(MediaPlayer.create(这一点,R.raw.camel));
sounds.add(MediaPlayer.create(这一点,R.raw.rhino));
sounds.add(MediaPlayer.create(这一点,R.raw.horse));
sounds.add(MediaPlayer.create(这一点,R.raw.donkey));
sounds.add(MediaPlayer.create(这一点,R.raw.wolf)); tempSounds =(ArrayList的< MediaPlayer的>)sounds.clone(); enableDisableImageView(假); } // onCreate方法结束 公共无效setDuration(INT持续时间){ } @覆盖
公共无效的onClick(视图v){
Log.i(声音,声键点击);
enableDisableImageView(真); 如果(V的instanceof ImageView的){ 算上++;
// Toast.makeText(getApplicationContext(),错误的,
// Toast.LENGTH_SHORT).show();
enableDisableImageView(假); } 如果(V == selectedImageView){
Toast.makeText(getApplicationContext(),正确的!
Toast.LENGTH_SHORT).show();
得分++;
Log.i(11111,计数值:+分);
Log.i(22222,计数值:+计数);
enableDisableImageView(假); } 如果(V == img_view1){ 如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
} time.setText();
如果(CountDownTimer!= NULL){
CountDownTimer.cancel();
}
enableDisableButton(真);
}
如果(V ==音){ //答案++;
freezeButtonAndPlaySoundThenUnfreezeButton();
loadImages();
COUNTDOWN();
// enableDisableButton(真);
} 如果(V == img_view2){
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
} enableDisableButton(真); //重新启用按钮
}
//如果其他(五==音){
// loadImages();
// COUNTDOWN();
// enableDisableButton(假);
//} 如果(V == img_view3){
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
} enableDisableButton(真); //重新启用按钮
}
//如果其他(五==音){
// loadImages();
// COUNTDOWN();
// enableDisableButton(假);
//} 如果(V == img_view4){
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
} enableDisableButton(真); //重新启用按钮
}
//如果其他(五==音){
// loadImages();
// COUNTDOWN();
// enableDisableButton(假);
//} 如果(计数→8){
AlertDialog.Builder alertbox =新AlertDialog.Builder(本);
setDuration(0);
MP = MediaPlayer.create(这一点,R.raw.claps);
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
}
mp.start();
Toast.makeText(getApplicationContext(),你的分数:+的分数,
Toast.LENGTH_SHORT).show();
//设置为显示该消息
alertbox.setMessage(!游戏结束。++你的分数是:+
+分数++你想再次发挥)?;
//设置正/ Yes按钮,并创建一个侦听器
alertbox.setPositiveButton(是,
新DialogInterface.OnClickListener(){ 单击该按钮时//做一些事情
公共无效的onClick(DialogInterface为arg0,ARG1 INT){
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
}
索引= 0;
索引1 = 0;
计数= 0;
得分= 1;
意图I =新意图(Animalsgame.this,
Animalsgame.class);
startActivity(ⅰ);
完();
}
}); //设置了负/否按钮,创建一个侦听器
alertbox.setNegativeButton(否,
新DialogInterface.OnClickListener(){ 单击该按钮时//做一些事情
公共无效的onClick(DialogInterface为arg0,ARG1 INT){
如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
}
}
计数= 0;
得分= 0;
完();
//意图I =新意图(VRGActivity2.this,
// VRGActivity1.class);
// startActivity(ⅰ); }
}); //显示框
alertbox.show();
enableDisableButton(假);
}
} //对点击的声音结束 私人无效COUNTDOWN(){ CountDownTimer =新CountDownTimer(6000,10000){ 公共无效onTick(长millisUntilFinished){
如果(isSoundPlay){
// freezeButtonAndPlaySoundThenUnfreezeButton();
isSoundPlay = FALSE;
}
time.setText(++ millisUntilFinished / 10000); } 公共无效onFinish(){ // time.setText(UP);
setDuration(0);
// Toast.makeText(getApplicationContext(),时间高达,
// Toast.LENGTH_SHORT).show(); isSoundPlay = TRUE; } //在完成结束
}。开始(); // countDown方法构造结束
} // countDown方法的方法结束 公共无效enableDisableButton(布尔州){ voice.setEnabled(州); } // enableDisableButton结束(布尔州) 公共无效enableDisableImageView(布尔州){ img_view1.setEnabled(州);
img_view2.setEnabled(州);
img_view3.setEnabled(州);
img_view4.setEnabled(州); } // enableDisableImageView结束(布尔州) 私人无效loadImages(){ 随机RNG =新的随机(); //随机函数 如果(产生的== NULL){
产生=新的ArrayList<整数GT;();
}其他{
generated.clear();
} Log.i(this.toString(),soundSelectedIndex+ soundSelectedIndex);
generated.add(soundSelectedIndex);
Log.i(this.toString(),初始阵列计数+ generated.size());
布尔标志; 的for(int i = 0; I< NO_IMAGE_BOXES - 1;我++){
Log.i(this.toString(),因为我+ I);
标志=真实的;
而(标志){
接下来= rng.nextInt(9);
指数=下一个;
如果(!generated.contains(下)){ Log.i(this.toString()生成的数组内容+下一个);
generated.add(下);
// ImageView的IV =(ImageView的)findViewById(imageViews [I]);
// iv.setImageResource(Animals_images [下一页]);
标志=标志!; } //结束,如果 //突破; } // While循环 } // for循环结束 //设置最后一个影像 //选择随机位置 INT POS = rng.nextInt(3);
INT TEMP = generated.get(0);
generated.set(0,generated.get(POS));
generated.set(POS,温度);
selectedImageView =(ImageView的)findViewById(imageViews [POS]);
的for(int i = 0; I< generated.size();我++){
Log.i(数组元素在列表中,+ generated.get(I));
ImageView的IV =(ImageView的)findViewById(imageViews [I]); iv.setImageResource(Animals_images [generated.get(ⅰ)]); } } // loadImages结束() 公共无效freezeButtonAndPlaySoundThenUnfreezeButton(){
enableDisableButton(假); //禁用按钮
INT randomInt = random.nextInt(tempSounds.size()); //设置选中的声音 Log.i(this.toString(),随机生成的声音+ randomInt); // soundSelectedIndex = randomInt;
MP = tempSounds.get(randomInt); //如果(sounds.contains(tempSounds.get(randomInt))){ //从声音列表中的实际索引 soundSelectedIndex = sounds.indexOf(tempSounds.get(randomInt)); Log.i(this.toString(),freezeButtonAndPlaySoundThenUnfreezeButton
+ soundSelectedIndex); //} tempSounds.remove(randomInt); mp.seekTo(0);
mp.start();
mp.setOnCompletionListener(新OnCompletionListener(){ @覆盖
公共无效onCompletion(MediaPlayer的mpalmost){ } //对完井方式结束 });在点击监听方法集//结束 } // freezeButtonAndPlaySoundThenUnfreezeButton方法结束 @覆盖
//前阵子pressed任务刷新
公共无效onBack pressed(){ 如果(熔点!= NULL){
如果(mp.isPlaying()){
mp.stop();
} //结束,如果(mp.isPlaying()) } //如果结束(熔点!= NULL) } //回pressed结束 @覆盖
保护无效的onPause(){ super.onPause(); } //对pause方法结束 @覆盖
保护无效调用onStart(){ super.onStart(); } //对启动方法结束 @覆盖
保护无效onResume(){ super.onResume(); } //对简历的方法结束 @覆盖
公共布尔的onkeydown(INT键code,KeyEvent的事件){ onBack pressed();
完(); 返回true; } //方法的onkeydown结束 // //定义方法,选择匹配的图像
//
//无效chooseImages(){
//
//} //选择图像结束
//
// //定义方法获取随机值
//
// INT getRandom(int值){
//
//如果(随机== NULL){
//
//随机=新的随机();
//
//}
//
//返回random.nextInt(值);
//
//} // getRandom结束(int值)方法} // Animalsgame活动结束我现在用一个声音按钮,四个图像的意见。当我点击按钮的声音,声音得到提高,同时,imageviews都充满了图像。但是,在手机,当我运行它。这表明在某些情况下的错误,当我点击声音按钮。我的Java代码的一部分,在我的工作是上面提到的..我正的错误是**空指针厚望**和错误指出的是在freezeButtonAndPlaySoundThenUnfreezeButton。 PLZ帮我一个要紧的..!
林猜测,你缺少的声音(MP变量上线394为空)。你不应该在0和INT randomInt = random.nextInt(tempSounds.size())随机的;因为没有元件和位置tempSounds.size()。它应该是(tempSounds.size() - 1)。
I am new to android, I am in a completing stage in creating one application. But I unfortunately some error gets raised when running it in the android phone, but working perfectly in android emulator...
Here is my java code:
package com.VRG;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Vector;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class Animalsgame extends Activity implements OnClickListener {
// int answer=0;
Button voice;
MediaPlayer mp;
TextView time;// count down timer
ImageView img_view1;
ImageView img_view2;
ImageView img_view3;
ImageView img_view4;
private ImageView selectedImageView;
static int index = 0;
static int index1 = 0;
static int noOfLapse;
static int count;
static int score = 1;
static boolean isSoundPlay;
CountDownTimer CountDownTimer;
int idx;
Integer next;
private Random random;
private ArrayList<MediaPlayer> sounds;
private ArrayList<MediaPlayer> tempSounds;
// Track the sound which is playing
private int soundSelectedIndex;
private Vector matchImages = null;
List<Integer> generated;
// Total number of image boxes
private static final int NO_IMAGE_BOXES = 4;
final int[] imageViews = { R.id.img_view1, R.id.img_view2, R.id.img_view3,
R.id.img_view4 };// Array of image views
int[] Animals_images = { R.drawable.cow, R.drawable.lion, R.drawable.dog,
R.drawable.sheep, R.drawable.elephant, R.drawable.camel,
R.drawable.rhinos, R.drawable.horse, R.drawable.donkey,
R.drawable.wolf }; // Array of Animal images
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
time = (TextView) this.findViewById(R.id.time);
img_view1 = (ImageView) this.findViewById(R.id.img_view1);
img_view2 = (ImageView) this.findViewById(R.id.img_view2);
img_view3 = (ImageView) this.findViewById(R.id.img_view3);
img_view4 = (ImageView) this.findViewById(R.id.img_view4);
img_view1.setOnClickListener(this);
img_view2.setOnClickListener(this);
img_view3.setOnClickListener(this);
img_view4.setOnClickListener(this);
// Count down timer
voice = (Button) this.findViewById(R.id.voice);// Animals sounds
voice.setOnClickListener(this);
// Initialise Lapse counter
noOfLapse = 0;
isSoundPlay = true;
random = new Random();
sounds = new ArrayList<MediaPlayer>();
sounds.add(MediaPlayer.create(this, R.raw.cow));
sounds.add(MediaPlayer.create(this, R.raw.lion));
sounds.add(MediaPlayer.create(this, R.raw.dog));
sounds.add(MediaPlayer.create(this, R.raw.sheep));
sounds.add(MediaPlayer.create(this, R.raw.elephant));
sounds.add(MediaPlayer.create(this, R.raw.camel));
sounds.add(MediaPlayer.create(this, R.raw.rhino));
sounds.add(MediaPlayer.create(this, R.raw.horse));
sounds.add(MediaPlayer.create(this, R.raw.donkey));
sounds.add(MediaPlayer.create(this, R.raw.wolf));
tempSounds = (ArrayList<MediaPlayer>) sounds.clone();
enableDisableImageView(false);
}// End of Oncreate method
public void setDuration(int duration) {
}
@Override
public void onClick(View v) {
Log.i("voice", "voice button clicking");
enableDisableImageView(true);
if (v instanceof ImageView) {
count++;
// Toast.makeText(getApplicationContext(), "Wrong",
// Toast.LENGTH_SHORT).show();
enableDisableImageView(false);
}
if (v == selectedImageView) {
Toast.makeText(getApplicationContext(), "Correct!",
Toast.LENGTH_SHORT).show();
score++;
Log.i("11111", "count value:" + score);
Log.i("22222", "count value:" + count);
enableDisableImageView(false);
}
if (v == img_view1) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
time.setText("");
if (CountDownTimer != null) {
CountDownTimer.cancel();
}
enableDisableButton(true);
}
if (v == voice) {
// answer++;
freezeButtonAndPlaySoundThenUnfreezeButton();
loadImages();
countDown();
// enableDisableButton(true);
}
if (v == img_view2) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
enableDisableButton(true); // Re-enable buttons
}
// else if (v == voice) {
// loadImages();
// countDown();
// enableDisableButton(false);
// }
if (v == img_view3) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
enableDisableButton(true); // Re-enable buttons
}
// else if (v == voice) {
// loadImages();
// countDown();
// enableDisableButton(false);
// }
if (v == img_view4) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
enableDisableButton(true); // Re-enable buttons
}
// else if (v == voice) {
// loadImages();
// countDown();
// enableDisableButton(false);
// }
if (count > 8) {
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
setDuration(0);
mp = MediaPlayer.create(this, R.raw.claps);
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
mp.start();
Toast.makeText(getApplicationContext(), "Your Score : " + score,
Toast.LENGTH_SHORT).show();
// set the message to display
alertbox.setMessage("Game Over..!" + " " + "Your score is:" + " "
+ score + " " + " Do you want to play again?");
// set a positive/yes button and create a listener
alertbox.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
index = 0;
index1 = 0;
count = 0;
score = 1;
Intent i = new Intent(Animalsgame.this,
Animalsgame.class);
startActivity(i);
finish();
}
});
// set a negative/no button and create a listener
alertbox.setNegativeButton("No",
new DialogInterface.OnClickListener() {
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
count = 0;
score = 0;
finish();
// Intent i = new Intent(VRGActivity2.this,
// VRGActivity1.class);
// startActivity(i);
}
});
// display box
alertbox.show();
enableDisableButton(false);
}
}// End of voice on click
private void countDown() {
CountDownTimer = new CountDownTimer(6000, 10000) {
public void onTick(long millisUntilFinished) {
if (isSoundPlay) {
// freezeButtonAndPlaySoundThenUnfreezeButton();
isSoundPlay = false;
}
time.setText("" + "" + millisUntilFinished / 10000);
}
public void onFinish() {
// time.setText("UP");
setDuration(0);
// Toast.makeText(getApplicationContext(), "Time Up",
// Toast.LENGTH_SHORT).show();
isSoundPlay = true;
}// End of on finish
}.start(); // End of countDown Constructor
}// End of countDown method
public void enableDisableButton(Boolean state) {
voice.setEnabled(state);
}// End of enableDisableButton(Boolean state)
public void enableDisableImageView(Boolean state) {
img_view1.setEnabled(state);
img_view2.setEnabled(state);
img_view3.setEnabled(state);
img_view4.setEnabled(state);
}// End of enableDisableImageView(Boolean state)
private void loadImages() {
Random rng = new Random(); // Random function
if (generated == null) {
generated = new ArrayList<Integer>();
} else {
generated.clear();
}
Log.i(this.toString(), "soundSelectedIndex " + soundSelectedIndex);
generated.add(soundSelectedIndex);
Log.i(this.toString(), "Initial Array Count " + generated.size());
Boolean flag;
for (int i = 0; i < NO_IMAGE_BOXES - 1; i++) {
Log.i(this.toString(), "For i " + i);
flag = true;
while (flag) {
next = rng.nextInt(9);
index = next;
if (!generated.contains(next)) {
Log.i(this.toString(), "Generated Array Contents " + next);
generated.add(next);
// ImageView iv = (ImageView) findViewById(imageViews[i]);
// iv.setImageResource(Animals_images[next]);
flag = !flag;
}// End of if
// break;
}// While loop
}// End of for loop
// Set the last image
// Choose the random position
int pos = rng.nextInt(3);
int temp = generated.get(0);
generated.set(0, generated.get(pos));
generated.set(pos, temp);
selectedImageView = (ImageView) findViewById(imageViews[pos]);
for (int i = 0; i < generated.size(); i++) {
Log.i("Array Element in the list", " " + generated.get(i));
ImageView iv = (ImageView) findViewById(imageViews[i]);
iv.setImageResource(Animals_images[generated.get(i)]);
}
}// End of loadImages()
public void freezeButtonAndPlaySoundThenUnfreezeButton() {
enableDisableButton(false); // disable buttons
int randomInt = random.nextInt(tempSounds.size());
// Set the selected sounds
Log.i(this.toString(), "Random Generated Sounds " + randomInt);
// soundSelectedIndex = randomInt;
mp = tempSounds.get(randomInt);
// if (sounds.contains(tempSounds.get(randomInt))){
// Get the actual index from the sounds list
soundSelectedIndex = sounds.indexOf(tempSounds.get(randomInt));
Log.i(this.toString(), "freezeButtonAndPlaySoundThenUnfreezeButton "
+ soundSelectedIndex);
// }
tempSounds.remove(randomInt);
mp.seekTo(0);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mpalmost) {
}// End of on completion method
});// End of set on click listener method
}// End of freezeButtonAndPlaySoundThenUnfreezeButton method
@Override
// while back pressed the task is refreshed
public void onBackPressed() {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}// End of if (mp.isPlaying())
}// End of if (mp != null)
}// End of back pressed
@Override
protected void onPause() {
super.onPause();
}// End of on pause method
@Override
protected void onStart() {
super.onStart();
}// End of on start method
@Override
protected void onResume() {
super.onResume();
}// End of on resume method
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
onBackPressed();
finish();
return true;
}// End of onKeyDown method
// // Define method for choosing matching image
//
// void chooseImages() {
//
// }// End of choosing images
//
// // Define method for getting random values
//
// int getRandom(int value) {
//
// if (random == null) {
//
// random = new Random();
//
// }
//
// return random.nextInt(value);
//
// }// End of getRandom(int value) method
}// End of Animalsgame activity
I am using one sound button, and four image views. When i click the sound button, the sound get raised and simultaneously, imageviews are filled with images. But in phone when i run it. it shows error in some instance, when i click the sound button.
My part of java coding, in which i am working is mentioned above..
The error which i am getting is **Null pointer expection** and the error pointed out is in freezeButtonAndPlaySoundThenUnfreezeButton. Plz do me a needful..!
Im guessing that you are missing the sounds (mp variable is null on line 394). And you shouldn't random between 0 and int randomInt = random.nextInt(tempSounds.size()); because there is no element and location tempSounds.size(). It should be (tempSounds.size()-1).
这篇关于在模拟器的工作,但手机不能正常工作在android系统?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!