Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.80
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
#1

Белый экран на телефоне - Программирование Android

13.05.2013, 15:58. Просмотров 6357. Ответов 8
Метки нет (Все метки)

И так, написал игрушку под Android. На эмуляторе в Eclipse все прекрасно работает. Скинул себе на телефон (Samsung Galaxy Spica I5700 Black с Android 2.1) и при запуске тупо белый экран. Скинул другу (Samsung GALAXY DUOS c Android 2.3).

Тот же результат. В эмуляторе стоит Android 2.1. В игре использую OpenGL (GLSurfaceView)

Подскажите, в чем может быть проблема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2013, 15:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Белый экран на телефоне (Программирование Android):

Вместо google карты белый экран
Написал приложение с google map. тестирую на реальном устройстве - все хорошо....

Starting: Intent { act=android.intent.action.MAIN. и пустой белый экран
При запуске приложения всё заканчивается на Starting: Intent {...

Отладка на телефоне
ПОйдем по порядку 1) включил на телефоне режим для...

Просмотреть БД в телефоне
Здравствуйте, я написал программу с локальной бд и SharedPreferences, как можно...

Создание apk на телефоне
Добрый день. Интересует есть ли возможность создания apk файлов прям на...

Запуск приложения на телефоне
Извиняюсь за такой вопрос, но как мне запустить приложение которое я сделал на...

8
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.05.2013, 17:43 #2
разные телефоны поддерживают разные конфиги OpenGL, в этом может быть проблема.
к тому же до Android 2.2 идет OpenGL, а начиная с 2.2 OpenGL 2 и они не совместимы.
1
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
13.05.2013, 18:11  [ТС] #3
А можно по подробнее про конфиги, а так же про возможные пути решения проблемы с белым экраном.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
13.05.2013, 18:28 #4
читайте гайды:
http://www.learnopengles.com/android-lesson-one-getting-started/
http://ajc.su/grafika/opengl-es-2-0-dlya-nachinayushhix/
http://andmonahov.blogspot.com/
http://habrahabr.ru/users/ginkage/topics/
http://www.goodroid.ru/articles/programmirovanie/opengl-es-for-android

смотрите семплы SDK.

Добавлено через 9 минут
OpenGL недостаточно прост чтобы сходу понять из-за чего белый экран, причин может быть тысяча(вплоть до аппаратной несовместимости), как и вариантов решения.
1
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
14.05.2013, 18:28  [ТС] #5
Спасибо за ссылки! За эти 2 дня провел пару тестов и выяснил, что у меня не рисуются полигоны, а белое, потому, что это цвет очистки экрана.

Вот сделал тестовый проект. Цвет очистки поставил зеленым. При клике по экрану рисуется красная точка в этом месте. Проблема в том, что на эмуляторе все нормально. а вот на телефоне фот зеленый, но точки не рисуются.

Вот код проекта. Тестил на андроид 2.1

MainActivity.java - главный класс проекта
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ua.nikkilla.nje4a;
 
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
public class MainActivity extends Activity {
    
    public GLSurfaceView glSurfaceView; 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        glSurfaceView = new RenderGlobal(this);
        setContentView(glSurfaceView);
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}


RenderGlobal.java - главный класс рендера
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package ua.nikkilla.nje4a;
 
import java.util.ArrayList;
 
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
 
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.opengl.GLSurfaceView.Renderer;
import android.view.MotionEvent;
 
public class RenderGlobal extends GLSurfaceView implements Renderer 
{
    public ArrayList<EntityPoint> pointsList;
    public float screenSizeX, screenSizeY;
    
    public RenderGlobal(Context context) 
    {
        super(context);     
        setRenderer(this); 
        pointsList = new ArrayList<EntityPoint>();
        screenSizeX = 0f;
        screenSizeY = 0f;
    }
    
    @Override
    public boolean onTouchEvent(MotionEvent e) 
    {
       
        if (MotionEvent.ACTION_DOWN == e.getAction())
        {
            pointsList.add(new EntityPoint(getTouchX(e),getTouchY(e)));
        }
        return true;
    }
 
    @Override
    public void onDrawFrame(GL10 gl) 
    {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT);    
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        gl.glLoadIdentity();        
        gl.glTranslatef(0f, 0f, -3f);
        
        for (int i = 0; i < pointsList.size(); i++)
        {
            pointsList.get(i).render(gl);
        }
    }
 
    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) 
    {
        gl.glViewport(0, 0, width, height);
        screenSizeX = width;
        screenSizeY = height;
    }
 
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) 
    {
        gl.glClearColor(0f, 0.5f, 0f, 1f);  
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    }
    
    public float getTouchX(MotionEvent e)
    {
        return (e.getX()/(float)screenSizeX)*2f-1f;
    }
    
    public float getTouchY(MotionEvent e)
    {
        return -((e.getY()/(float)screenSizeY)*2f-1f);
    }
}


EntityPoint - класс отрисовывающий точку.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package ua.nikkilla.nje4a;
 
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
 
import javax.microedition.khronos.opengles.GL10;
 
public class EntityPoint 
{
    public FloatBuffer pointBuffer;
    
    public EntityPoint(float x, float y)
    {
          ByteBuffer bb = ByteBuffer.allocateDirect(8);
          bb.order(ByteOrder.nativeOrder());
          pointBuffer = bb.asFloatBuffer();
          pointBuffer.put(x);
          pointBuffer.put(y);
          pointBuffer.position(0);
    }
    
    public void render(GL10 gl)
    {   
        gl.glColor4f(1f, 0f, 0f, 1f);
        gl.glVertexPointer(2, GL10.GL_FLOAT, 0, pointBuffer);
        gl.glPointSize(4f);
        gl.glDrawArrays(GL10.GL_POINTS, 0, 1);
    }
}
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 18:44 #6
у меня тоже семплы не работали пока не взял из SDK, сильно не углублялся в эту тему, поэтому могу только посоветовать смотреть семплы из SDK.
1
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
14.05.2013, 18:47  [ТС] #7
А какая может быть причина этого, и какие именно нужно взять? (Если можно, имена файлов или имя папки)
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 18:52 #8
Цитата Сообщение от Nikkilla Посмотреть сообщение
А какая может быть причина этого
как уже говорил причин может быть много, OpenGL зависит от хардварной части а не только от API андроида, так что я бы не доверял эмулятору.
в семплах SDK целый раздел в графике есть для OpenGL.
1
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
14.05.2013, 20:46  [ТС] #9
Спасибо, это семпл (GLSurfaceViewActivity.java) помог!
0
14.05.2013, 20:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 20:46
Привет! Вот еще темы с решениями:

Не показывает курсив на телефоне
Помогите пожалуйста не знаю че делать, отформатировал текст курсивом, в...

Запустить Код на телефоне
Здравствуйте, дорогие друзья. Хочу обратится к вам вот по такому вопросу....

На телефоне не выводиться результат
пропарсил xml из сети, в манифест добавил: на эмуляторе инфа из xml...

Тестирование на телефоне (планшете)
Доброго времени суток. Подскажите пожалуйста в чем может быть причина. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru