Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RemoteViews и Bitmap, failed binder transaction 
V
    Опции темы
azusdex
Дата 10.2.2012, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 26.12.2011

Репутация: 1
Всего: 1



Доброго всем вечера, дня, утра  smile 

Может кто сможет помочь, столкнулся с проблемой размера Bitmap:
Решил построить виджет дигитальных часов, используя свой шрифт для текста

Код

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
        
        Intent intent = new Intent(context, UpdateService.class);
        context.startService(intent);
    }
    
    private class MyTime extends TimerTask {
        RemoteViews remoteViews;
        AppWidgetManager appWidgetManager;
        ComponentName thisWidget;
        java.text.DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
        Context context;
        
        public MyTime(Context context, AppWidgetManager appWidgetManager) {
            this.context = context;
            this.appWidgetManager = appWidgetManager;
            remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
            thisWidget = new ComponentName(context, AnalogClock.class);
        }
        
        @Override
        public void run() {
            //remoteViews.setTextViewText(R.id.widget_text, " " + format.format(new Date()));
            remoteViews.setImageViewBitmap(R.id.widget_text, buildClock(format.format(new Date()), this.context));
            appWidgetManager.updateAppWidget(thisWidget, remoteViews);
        }
        
        public Bitmap buildClock(String str, Context context) {
            Bitmap bitmap = Bitmap.createBitmap(160, 160, Bitmap.Config.ARGB_4444);
            Canvas canvas = new Canvas(bitmap);
            Paint paint = new Paint();
            Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/besi6.ttf");
            paint.setAntiAlias(true);
            paint.setSubpixelText(true);
            paint.setTypeface(font);
            paint.setStyle(Paint.Style.FILL_AND_STROKE);
            paint.setColor(Color.BLACK);
            //paint.setColor(Color.rgb(0, 204, 255));
            paint.setTextSize(20);
            paint.setTextAlign(Align.CENTER);
            canvas.drawText(str, 80, 85, paint);
            return bitmap;
        }
    }


Для того что бы использовать шрифт пришлось текст передовать методу buildClock который в свое время переводит его в bitmap (так как виджет в андроеде не способен на другую замену шрифта). Но все бы хорошо если бы не новая проблема. CatLog после 10 - 15 вызовов onUpdate перестает работать и выводит ошибку 
failed Binder transaction и это только в CatLog. Сам виджет на мобиле перестает обновлятся, но ошибки не какой не выдает. После долгого поиска в гугле понял что проблема в ограничение памяти вывода, если сделать bitmap намного, намного меньше то должна исчезнуть проблема. Но если я уменшаю bitmap то текст становится не читаемым. Есть ли какое нибидь другое решение?

Зарание благодарен  smile 
PM MAIL   Вверх
azusdex
Дата 14.2.2012, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 26.12.2011

Репутация: 1
Всего: 1



Решено, разобрался!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0381 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.