Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Monitoramento do nível do volume no Maemo 5 usando MAFW

From Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Tradução:
Por edprado
Última alteração feita por lpvalente em 06 Dec 2012

Este artigo demonstra como monitorar o volume no Maemo 5 usando o MAFW. O Media Application Framework(MAFW) oferece uma camada aberta, flexível e extensível que facilita o desenvolvimento de aplicações multimedia para a plataforma Maemo. MAFW API.

Você normalmente começa com a obtenção do objeto MafwRegistry e depois carrega o(s) plugin(s):

/* gcc mafw.c -o mafw -g --std=gnu99 -Wall $(pkg-config --libs --cflags mafw glib-2.0) */
 
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libmafw/mafw.h>
 
int main(int agrc, char** argv)
{
g_type_init();
 
MafwRegistry *registry = mafw_registry_get_instance();
 
GError *error = NULL;
if(!mafw_registry_load_plugin(registry, "mafw-gst-renderer", &error)) {
if(error) {
printf("%s\n", error->message);
g_error_free(error);
}
printf("Impossível carregar o plugin mafw_gst_renderer\n");
exit(1);
}
 
GList *renderers = mafw_registry_get_renderers(registry);
print_extensions(renderers);
GList *sources = mafw_registry_get_sources(registry);
print_extensions(sources);
 
GMainLoop *loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
 
exit(EXIT_SUCCESS);
}

O próximo passo é explorar as propriedades oferecidas por uma extensão(extension) e ouvir o sinal do "property-changed" (veja que você pode conectar ao "property-changed::volume" se você quer somente monitorar a propriedade "volume"

static void print_extensions(GList *extensions)
{
for(GList *iter = extensions; iter; iter = iter->next) {
MafwExtension* extension = (MafwExtension*)iter->data;
g_signal_connect(extension, "property-changed",
G_CALLBACK(property_changed_cb), NULL);
const gchar *name = mafw_extension_get_name(extension);
const gchar *uuid = mafw_extension_get_uuid(extension);
const gchar *plugin = mafw_extension_get_plugin(extension);
printf("%s[%s]:%s\n", name, uuid, plugin);
const GPtrArray *properties = mafw_extension_list_properties(extension);
for(int i = 0; i < properties->len; i++) {
MafwExtensionProperty *property = properties->pdata[i];
mafw_extension_get_property(extension, property->name,
property_get_cb, NULL);
}
}
}

Callbacks são definidos desta maneira:

static void property_get_cb(MafwExtension *self, const gchar *name,
GValue *value, gpointer udata, const GError *error)
{
if(error) {
printf("%s\n", error->message);
} else {
print_property(name, value);
}
}
 
static void property_changed_cb(MafwExtension *self, const gchar *name,
GValue *value, gpointer udata)
{
print_property(name, value);
}


Imprimindo o valor da propriedade (de acordo com o GValue)

static void print_property(const gchar *name, GValue *value)
{
switch(G_VALUE_TYPE(value)) {
case G_TYPE_UINT:
printf("\t%s[%s] = %u\n", name, G_VALUE_TYPE_NAME(value),
g_value_get_uint(value));
break;
case G_TYPE_INT:
printf("\t%s[%s] = %i\n", name, G_VALUE_TYPE_NAME(value),
g_value_get_int(value));
break;
case G_TYPE_BOOLEAN:
printf("\t%s[%s] = %i\n", name, G_VALUE_TYPE_NAME(value),
g_value_get_boolean(value));
break;
case G_TYPE_STRING:
printf("\t%s[%s] = \"%s\"\n", name, G_VALUE_TYPE_NAME(value),
g_value_get_string(value));
break;
default:
printf("\t%s[%s]\n", name, G_VALUE_TYPE_NAME(value));
break;
}
}

A propriedade de seu interesse é o "volume".

This page was last modified on 6 December 2012, at 19:07.
180 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×